# Makecode 教程 ## 代码与编程 以下的步骤说明基于Windows操作系统,如果你使用的是其他操作系统,可以将其作为参考。 ### 1快速开始 本节介绍如何为micro:bit编写程序以及如何将其下载到micro:bit。 micro:bit官方网站上有非常详细的教程, 您可以参考:[Https://microbit.org/guide/quick/](https://microbit.org/guide/quick/) Step 1: 连接micro:bit板 通过Micro USB线将micro:bit连接到电脑,([使用移动动设备对micro:bit进行编码,请移步查看](https://microbit.org/guide/mobile/):) Macs、PCs、 Chromebooks and Linux系统(包括Raspberry Pi)都支持micro:bit。 ![](media/f00f946e1f194811b1c84725e0eb5d16.png) ![](media/18c70cf16dcf8c9694a1af8b12530cf9.png) micro:bit主板背后的红色LED会显示,表明micro:bit主板有电了。 Micro:bit 将在您的电脑上显示为一个名为'MICROBIT'的驱动器。但请注意,它不是普通的USB磁盘!如下图: ![](media/a2b53f93f4c24b81fc5cdb5986fd100d.png) Step 2: 编写程序 在浏览器中访问链接: 然后单击“新建项目”,出现“创建项目”对话框,在对话框中输入“heartbeat”,单击“创建”并开始编程。 如果你的电脑具有Windows 10操作系统,则还可以使用Windows 10 App进行编程,这与在浏览器上进行编程完全相同: [https://www.microsoft.com/zh-cn/p/makecode-for-micro-bit/9pjc7sv48lcx?ocid=badgep&rtc=1&activetab=pivot:overviewtab](https://www.microsoft.com/zh-cn/p/makecode-for-micro-bit/9pjc7sv48lcx?ocid=badgep&rtc=1#activetab=pivot:overviewtab) (以下是以Google Chrome为例,其他浏览器类似) ![](media/f7a321023281fc7221a9506b10f2eaaa.png) ![](media/e07644b623697bf2510f032a516f407a.png) 使用MakeCode编辑器,写一个micro:bit代码。 例如,从模块区拖放一些指令方块放入代码编辑区,然后在MakeCode编辑器中的Simulator上尝试你的程序, 下一节将进一步介绍Makecode。 如果你的编程界面是英文界面需要切换到中文界面 操作:如下图点击右上角1(设置)图标,再点击2 Language,然后选择简体中文,这样就切换到中问界面了 ![](media/77f06b2f0aaecae7c5f6a462e6ed344e.png) ![](media/122bb510e3a3515916407fe327bb59fe.png) ![](media/227be9e17bf4fba3e7dc9840d592794d.png) 1.点击基础拖出两个 显示图标方块放入无线循环中,点击第二个方块下拉按钮换成 ![](media/6f4ee722b59db324b57fba6c5d72e5d7.png) 图标,效果如图一 2.点击“ JS JavaScript”,你可以看到对应的JavaScript语言代码程序,如下图二 ![](media/0d620a83693f3f968b1b22becc6875b4.png) 图一 ![](media/32e69bb2fc03fc9fcdb472db5798b2a2.png) 图二 你还可以点击“JavaScript ”,再点击下拉按钮选择“Python”,你还可以看到对应的Python语言代码程序,如下图: ![](media/70678f6683d14388675619b1cd772a7a.png) Step 3: 下载代码 如果使用Windows 10 App编写程序,则只需单击“下载”按钮,该代码程序将直接下载到micro:bit主板,而无需任何其他操作。 如果使用浏览器编写程序,请按照以下步骤操作: 单击编辑器中的“下载”按钮。 这将下载一个“hex”文件,该文件是micro:bit可以读取的紧凑程序格式。 十六进制文件下载后,将其复制到你的micro:bit,就像将文件复制到USB驱动器一样。 在Windows上,你还可以右键单击并选择“发送到→MICROBIT(E)”将“hex”文件拷贝到micro:bit。 也可以将“hex”文件直接拖入MICROBIT(E)磁盘中。 ![](media/3eb47cbc010bcea42b28fafebd4b32ca.png) ![](media/b8a639197f0e99e16bc643f37c4d02aa.png) 将下载好的“hex”文件拷贝到micro:bit过程中,micro:bit主板背面的电源信号灯会闪烁,当拷贝完成后电源信号灯停止闪烁,保持长亮。 Step 4: 运行程序 代码程序上传micro: bit 主板后,通过micro USB线或外接电源供电给micro: bit 主板供电,micro: bit主板上5 x 5 LED点阵显示heartbeat的图案。 ![](media/672bfb4d87b938fc586a849bff0229fe.png) ![](media/d61a26d2f2367f0378974832f679efe1.png) micro USB线供电 外接电源供电(3V) 每次编程时,MICROBIT驱动器都会自动弹出并返回,但是你的hex文件将会消失。 micro:bit 只能接收hex文件,不会存储任何其他文件! Step5:掌握 本小节向你展示了如何开始使用micro:bit,但是除了MakeCode之外,您还可以使用Python和基于文本的JavaScript来编写micro:bit。转到:查看不同的语言,或查看:,了解你可能想要尝试的一些内容。 ### 2.Makecode 在Google Chrome访问链接:,打开makecode在线版本 ![](media/f7a321023281fc7221a9506b10f2eaaa.png) 点击 “新建项目”,出现“创建项目”对话框,在对话框中输入“heartbeat”,单击“创建”进入Makecode 编译器,Makecode 编译器如下: ![](media/28d226fea6fb6074c37309e9ee5ff026.png) 在代码编辑区中,有两个固定的指令方块“当开机时”和“无限循环”。 上电或复位后,“当开机时”指令方块中的代码将仅执行一次;并且“无限循环”指令方块中的代码将循环执行。 ### 3.快速下载 如前所述,如果使用makecode的Windows 10 App,则可以通过单击“下载”按钮将代码快速下载到micro:bit主板。 使用makecode的浏览器版本下载编写好的代码程序可能需要更多步骤。 但是,如果您将Google Chrome 用于Android,ChromeOS,Linux,macOS和Windows 10系统,则可以实现快速下载功能。 在这里,我们使用Chrome的webUSB功能,该功能允许网页访问您的micro USB硬件设备。 我们将按照以下步骤完成micro:bit设备与网页的连接和配对。 配对装置 用micro USB线连接电脑和micro:bit。 单击“下载”后面的“...”,然后单击“设备配对(connect device)”。 ![](media/ab19d85820cb53a685bd527d141a5f50.png) 继续点击下一步 ![](media/f44115ad31df7258fa6fbc0eebaab216.png) 在弹出窗口中选中“设备”,然后单击“连接”按钮。 如果弹出窗口中没有设备,请参考以下内容:[https://makecode.microbit.org/device/usb/webusb/troubleshoot](https://makecode.microbit.org/device/usb/webusb/troubleshoot) 当然,如果你不想点击链接进入相关页面中查看,你也可以本教程中直接阅读“Troubleshooting downloads with WebUSB.pdf”。 如果你的micro:bit出现问题是需要更新micro bit的固件,在本教程的文件夹“如何更新micro bit的固件”中的文件“如何更新micro bit的固件.pdf”介绍了如何更新micro:bit的固件,其内容来自:[https://microbit.org/guide/firmware/](https://microbit.org/guide/firmware/) 连接成功后,单击“下载”按钮,程序将直接下载到Micro: bit,同时还会出现“Download completde!”提示语。 ![](media/5cdddd9e43b14a0d6662590469c82c9d.png) ### 4.Makecode扩展 为了轻松使用K-bit,我们为K-bit制作了一个makecode扩展库 添加 K-bit 扩展 您可以通过以下方法添加K-bit扩展库。 打开makecode,在任何项目下,先点击右上角的齿轮图标(设置),再点击扩展。 ![](media/666fe797f5044a440e18475974eda4af.png) 在搜索框中输入链接:https://github.com/keyestudio-team/pxt-k-bit 然后单击搜索。 其中,可以在不输入链接的情况下直接添加蓝牙,Servo,neopixel等扩展库,只需在扩展首页上单击相应扩展库的图标即可。 ![](media/fee2d1bcda1f89f5d93b2b3dcc575860.png) 单击搜索结果K-bit以下载并安装。 该过程可能需要几秒钟。 ![](media/ac27b51dc82dba8e4ed1b68af64282f6.png) 安装完成后,您可以在左侧找到K-bit扩展库(包括K_Bit、IrRemote、Neopixel)。 ![](media/0db5c8b88b3b5ea45e74ceae02c6b1f3.png) ![](media/b4a95d2b84a70f40d96cded1f2b79eeb.png) 注意: 添加到项目中的扩展库仅对该项目有效,而不会出现在其他项目中。 因此,当您创建K-bit的新项目时,需要再次添加K-bit扩展库。 更新或删除K-bit扩展 如果您需要更新或删除K-bit扩展程序,请按照以下说明进行操作。 点击 "JSJavaScript" 按钮切换到文本代码。 ![](media/81d2daffae58cd189aad4b06800f986b.png) 点击左边的 资源管理器. ![](media/59355927a4be29f802e61752449bfd63.png) 在扩展列表中找到扩展库。 单击垃圾箱图标以删除k-bit扩展程序(包括K_Bit、IrRemote、Neopixel),单击刷新图标以更新k-bit扩展程序。 ![](media/342dbe2178781130c9c24985a93d1ec3.png) ### 5.资源和代码 该工具包的资源和代码可以在下面下载:https://pan.baidu.com/s/1wbJroxGKyMOwSZdBn8SNHA  提取码:jfpp 下载并解压缩后,将生成一个名为“KE3023(KE3024) Microbit Mini Smart Robot Car 迷你智能机器人小车V2“的文件,您可以将其放在电脑磁盘上的任何位置。 ### 6.导入代码{ XE "7.6.导入代码" } 我们为每个项目提供十六进制文件(项目文件)。 十六进制文件是可以直接导入的,您也可以手动拖动代码块来完成项目代码,如果是选择通过拖动代码块来完成代码,则可能需要添加必要的扩展库。 对于简单项目,建议通过拖动代码块来完成项目。 对于复杂的项目,建议通过导入十六进制代码文件来完成项目. 接下来,我们以“闪烁的心”项目为例,介绍如何加载代码。 打开Web版本的makecode。 ![](media/3164be38e1fd17c715e467ea15939d29.png) 在弹出的对话框中,单击“导入文件”。 ![](media/bb45f50bf206f01ef76e8de959f9eb2d.png) ![](media/1cff104dda5bf82aec0899d988c97d14.png) 选择文件路径:../1.Makecode教程\micro:bit测试程序\8.1:闪烁的心/microbit-heartbeat.hex”。 然后点击“继续!” ![](media/6bd717c47746abb9415b086651f90ba7.png) ![](media/8db5f5f8652e71e5ae4af64f67e41a74.png) 除了上述将提供的项目代码程序文件直接导入到Makecode 编译器中的方法之外,也可以将提供的项目代码程序文件直接拖入到Makecode 编译器中,如下图所示: ![](media/ab535a6e61c8d887b516a13407922db1.png) 几秒钟后,项目成功加载。 ![](media/5cdddd9e43b14a0d6662590469c82c9d.png) 注意:如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的,下面是CoolTerm安装方法。 ### 7.CoolTerm安装方法 这里需要安装CoolTerm程序,CoolTerm程序是用来在下面的一些实验中读取串口的,这里我们提供了CoolTerm程序文件下载链接: 1. 现在,让我们来安装CoolTerm程序,这里我们是以PC Window系统为例,选择下载安装CoolTerm Win,下载后解压并打开。(PC Mac系统和PC Linux系统也类似) ![](media/97f831d38df9ee01dcfedac244bfe281.png) ![](media/e77548d01727e523e9e8c900d2fa962d.png) (2)左键双击程序文件 ![](media/5f29eed25fc16602cfc0716f047c2da1.png) 。(注意:必须保证micro:bit驱动已安装和micro:bit已用micro USB数据线连接到电脑上) ![](media/74fd81c83f0c0a26b4e299b93ce4ede4.png) 工具栏上每个按钮的功能如下所示: ![](media/70bebd79d7cd20336ae394c916500a28.png) |![](media/2b728375ed2b8cd288c884e553418001.png)|打开一个新的终端| |-|-| |![](media/5f972f2eac5050ca0107416b2be067c2.png)|打开已保存的连接| |![](media/be6f8b560e0afc447f9c32b4474f633f.png)|将当前连接保存到磁盘| |![](media/52257d028694a313fc4eea4d9c2469d7.png)|打开串行连接| |![](media/6ad366842b18084553a142ab82a613cf.png)|关闭串行连接| |![](media/8fa3ac342549d33b6c9aa5a9e4688bea.png)|清除接收到的数据| |![](media/c8d1dd8c3356b4938e143de1022e5842.png)|打开“连接选项”对话框| |![](media/36e13c266fd4b9723d9db40fe30cd203.png)|以十六进制格式显示终端数据| |![](media/b505c71c3344036730b1d67f0c62a354.png)|显示“帮助”窗口| ## 小车的课程介绍 实验8.1至8.12是使用micro:bit主板自带的传感器模块和LED点阵。 ### 1:闪烁的心 1. 实验说明: 首先先来练习一个不需要其他辅助元件,只需要一块micro:bit主板和一根micro USB数据线的简单实验,让micro:bit显示“闪烁的心”,这是一个让micro:bit主板和PC机通信的实验,这也是一个入门实验,希望可以带领大家进入micro:bit的魔幻世界。 2. 准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 ![](media/226913d0639a68b9ff36d9b4767de937.png) 3. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|..../1.Makecode教程\micro:bit测试程序\8.1:闪烁的心|microbit-Heart beat.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“基础”模块,找到并拖出指令方块“显示图标”放入“无线循环”指令方块中,再复制指令方块“显示图标”1次也放入“无线循环”指令方块中并且点击“❤”图案后面的下拉三角形按钮选择“ ![](media/04fdfc9060943954e7938bb1a741d626.png) ”图案 ![](media/16001e58c56e0618ba8590216ea0a690.png) 完整的代码程序: ![](media/0abb62345db204d1eb6014aaeaa77ae4.png) ....................①“无限循环”指令方块仅运行一次以启动程序。 ....................②在“当开机时”指令方块之内,程序循环运行。 ....................③LED点阵显示“❤”图案 ....................④LED点阵显示“![](media/04fdfc9060943954e7938bb1a741d626.png)”图案 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/32e69bb2fc03fc9fcdb472db5798b2a2.png) 4. 实验结果: 按照之前的方式将代码下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,micro:bit主板上的LED点阵屏切换显示“❤”图案和“ ![](media/04fdfc9060943954e7938bb1a741d626.png) ”图案,循环进行。 (如何下载?如何快速下载?) 如果存在下载问题,请断开micro USB线和Micro:bit,然后重新连接它们并重新打开Makecode,以尝试再次下载。 ### 2:LED点阵中单个LED显示 ![](media/8c3f540a07aab97e1608ba8770837f7b.png) 1. 实验说明: micro:bit主板的LED点阵共由25个发光二极管组成,5个一组,分别对应X和Y方向,形成一个5×5的矩阵,且每个发光二极管是放置在行线(X)和列线(Y)的交叉点上,我们可以通过设置坐标点来实现对25个LED中某一个LED的控制。例如,想要LED点阵中第1行第1个LED点亮,可以设置坐标点为(0,0);第1行第3个LED点亮,可以设置坐标点为(2,0);第1列第5个LED点亮,可以设置坐标点为(0,4);第3列第2个LED点亮,可以设置坐标点为(2,1),依此类推。 ![](media/a44f7625e2b1d61819bfc1985c321796.png) 2. 准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.2:LED点阵中单个LED显示|microbit-LED点阵中单个LED显示.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“led 启用 fasle”放入“”指令方块中,点击“false”后面的下拉三角形按钮选择“true”。 ![](media/30a68088f02c2ce629e2c47284b0b920.png) 2. 点击“Led”模块,找到并拖出指令方块“切换x 0y 0”放入“无限循环”指令方块中,将“x 0”改成“x 1”。 ![](media/96c862dd956ec88820e1d6a740c02c7c.png) 3. 点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入代码块 ![](media/96c862dd956ec88820e1d6a740c02c7c.png) 中,设置延时500毫秒。 ![](media/c36063ad438a4be637ca98b0b6aa8a9d.png) 4. 复制代码串 ![](media/c36063ad438a4be637ca98b0b6aa8a9d.png) 1次放入“无限循环”指令方块中。 ![](media/b26b50cd31e20535f2d13031de67e19b.png) 5. 点击“Led”模块,找到并拖出指令方块“绘图x 0y 0”放入“无限循环”指令方块中,将“x 0 y 0”改成“x 3 y 4”。 ![](media/8ff3a900b4339baed15f0ca54814ae3a.png) (6)复制指令方块“暂停 (ms) 500”1次“无限循环”指令方块中。 ![](media/819ce06f005063132e92e828ecfb4dba.png) (7)点击“Led”模块,找到并拖出指令方块“取消绘图x 0 y 0”放入“无限循环”指令方块中,将“x 0 y 0”改成“x 3 y 4”,并复制指令方块“暂停 (ms) 500”1次放入“无限循环”指令方块中。 ![](media/8152da905725af0e8f5bf4ad5ccd9652.png) 完整的代码程序: ![](media/b738570ca6603597110618ddbc75d786.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②打开LED点阵屏。 ....................③在“无限循环”指令方块之内,程序循环运行。 ....................④切换处于坐标x 1 y 0的LED亮度。 ....................⑤延时时间500毫秒。 ....................⑥切换处于坐标x 1 y 0的LED亮度。 ....................⑦延时时间500毫秒。 ....................⑧点亮处于坐标x3,y4的LED。 ....................⑨延时时间500毫秒。 ....................⑩熄灭处于坐标x3 y4的LED。 ....................⑪延时时间500毫秒。 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/cdbb460770bef54d313bd6ee11761813.png) 4.实验结果: 按照之前的方式将代码下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,我们就可以看到切换坐标点(1,0)的LED的亮灭状态,持续0.5s,再次切换坐标点(1,0)的LED的亮灭状态,持续0.5s;点亮坐标点(3,4)的LED,持续0.5s,熄灭坐标点(3,4)的LED,持续0.5s。循环进行。 ### 3:5×5 LED点阵图案显示 ![](media/8c3f540a07aab97e1608ba8770837f7b.png) 1. 实验说明: 点阵在我们生活中很常见,很多都有用到它,比如LED广告显示屏,电梯显示楼层,公交车报站等等。 micro:bit主板的LED点阵共由25个发光二极管组成,上一课我们已经讲过通过设置坐标点来实现对LED点阵的25个LED中的某个LED的控制,这样可以通过设置多个坐标点控制多个LED的亮灭使得LED点阵能够显示图案、数字、字符串。我们也可以在特定代码中通过点击 LED点阵的灰白色小正方形点亮 LED点阵对应的LED来实现LED点阵显示图案、数字、字符串。除了上述方法还可以使用自定义图案使LED点阵显示图案。 2. 准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3. 实验代码: 代码1: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|...\1.Makecode 教程\micro:bit测试程序\8.3:5×5 LED点阵图案显示\5 x 5 LED点阵图案显示-1|microbit-5 x 5 LED点阵图案显示-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“led 启用 fasle”放入“当开机时”指令方块中,点击“false”后面的下拉三角形按钮选择“true”。 ![](media/30a68088f02c2ce629e2c47284b0b920.png) (2)点击“Led”模块,找到并拖出指令方块“绘图 x 0 y 0”放入“无限循环”指令方块中,复制“绘图 x 0 y 0”指令方块8次并且放入“无限循环”指令方块中,将“x 0”y 0”分别改成“x 2”y 0”、“x 2”y 1”、“x 2”y 2”、“x 2”y 3”、“x 2”y 4”、“x 1”y 3”“x 0”y 2”、“x 3”y 3”、“x 4”y 2”。 ![](media/6524556e089162eb33a94e7cb5460286.png) 完整的代码程序: ![](media/2211e578fd172f9c7fb76fbe0f4407f2.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②打开LED点阵屏。 ....................③在“无限循环”指令方块之内,程序循环运行。 ....................④点亮处于坐标x 2,y 0的LED。 ....................⑤点亮处于坐标x 2,y 1的LED。 ....................⑥点亮处于坐标x 2,y 2的LED。 ....................⑦点亮处于坐标x 2,y 3的LED。 ....................⑧点亮处于坐标x 2,y 4的LED。 ....................⑨点亮处于坐标x 1,y 3的LED。 ....................⑩点亮处于坐标x 0,y 2的LED。 ....................⑪点亮处于坐标x 3,y 3的LED。 ....................⑫点亮处于坐标x 4,y 2的LED。 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/51c87937aa1d386037ec5921cdab7259.png) 代码2: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode 教程\micro:bit测试程序\8.3:5×5 LED点阵图案显示\5 x 5 LED点阵图案显示-2|microbit-5 x 5 LED点阵图案显示-2.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: 1. 点击“基础”模块,找到并拖出指令方块“显示数字”放入“当开机时”指令方块中,并且复制指令方块“显示数字”4次,将数字0分别改成1、2、3、4、5。 ![](media/072fd5ff9b200606aca2f184774d4ff9.png) 2. 从“基础”模块,拖出指令方块“显示LED”放入“当开机时”指令方块中,点击灰蓝色小方框变白色,点亮LED点阵对应的LED,形成“↓”图案。 ![](media/38372a730d72dfcc201703d3bcdebe1b.png) 3. 从“基础”模块,拖出指令方块“显示字符串Hello!”放入“当开机时”指令方块中。 ![](media/6e8a6572b0f77aec96c1e6ded08c90ab.png) 4. 从“基础”模块,拖出指令方块“显示图标”放入“当开机时”指令方块中。 ![](media/fe14b774db3a601a7d1f467e7e5b643f.png) 5. 点击“基础”模块,找到并拖出指令方块“显示箭头北”放入“当开机时”指令方块中,复制指令方块“显示箭头北”3次,点击“北”后面的下拉三角形按钮分别选择“东北”、“东南”、“西南”、“西北”。 ![](media/441228dc6a6722d350b7b8438d0da428.png) 6. 先点击“基础”模块,找到并拖出指令方块“清空屏幕”放入“当开机时”指令方块中,点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“当开机时”指令方块中,设置延时500毫秒。 ![](media/8697fca7b6d2ca4f8afe2dd0a458ba08.png) 完整的代码程序: ![](media/8697fca7b6d2ca4f8afe2dd0a458ba08.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②在LED点阵显示数字1。 ....................③在LED点阵显示数字2。 ....................④在LED点阵显示数字3。 ....................⑤在LED点阵显示数字4。 ....................⑥在LED点阵显示数字5。 ....................⑦在LED点阵点亮对应的LED,显示“↓”图案。 ....................⑧在LED点阵滚动显示字符串“Hello!”。 ....................⑨在LED点阵点亮对应的LED显示“❤”图案。 ....................⑩在LED点阵点亮对应的LED显示“东北”方向箭头图案。 ....................⑪在LED点阵点亮对应的LED显示“东南”方向箭头图案。 ....................⑫在LED点阵点亮对应的LED显示“西南”方向箭头图案。 ....................⑬在LED点阵点亮对应的LED显示“西北”方向箭头图案。 ....................⑭清空屏幕。 ....................⑮延时500毫秒。 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/2d8ee340097230ecc8b62e176faaaa3e.png) 4. 实验结果: 按照之前的方式将代码1下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,我们就可以看到micro:bit主板的5×5 LED点阵显示“向下”图案 ![](media/d4e278da768e447ed344d581e671f57a.png) ; 用同样的方法将代码2下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,我们就可以看到micro:bit主板的5×5 LED点阵开始显示数字1、2、3、4、5,然后循环显示“向下”图案 ![](media/d4e278da768e447ed344d581e671f57a.png)、字符串“Hello!”、“心”图案![](media/66b31365d42274ef94ce9a3fcea1cd6c.png)、“东北”方向图案![](media/39fe4029acb5fb675d875c58e382d148.png)、“东南”方向图案![](media/45fcde65eb80a942d3903e400a346587.png)、“西南”方向图案![](media/9e34fdb19d72918bde242994a3c94c1f.png)和“西北”方向图案![](media/2a45fca9d836ce38674c347c70c81e02.png) 。 ### 4:micro:bit的可编程按键 ![](media/06be84fb11b1fd07cd0cbb392132b903.png) 1. 实验说明: ![](media/13f8f274b4c420c973de29619432bd6e.png)按键可以控制电路的通断,把按键接入电路中,不按下按键的时候电路是断开的,一按下按键电路就通啦,但是松开之后就又断了。可是为什么按下才通电呢?这得从按键的内部构造说起。没按下之前,电流从按键的一端过不去另一端,按键的两端就像两座山,中间隔着一条河,我们在这座山过不去另一座山;按下的时候,按键内部的金属片把两边连接起来让电流通过,就像搭了一座桥,把两座山连接起来。 按键内部结构如图: ![](media/d2a204e61c768f18924150db58aee093.png) ,未按下按键之前,1、2就是导通的,3、4也是导通的,但是1、3或1、4或2、3或2、4是断开(不通)的;只有按下按键时,1、3或1、4或2、3或2、4才是导通的。 micro:bit主板有三个按键,反面的是复位按钮,正面的是两个可编程按键,通过对两个可编程按键组合可以有三种组合,作为输入元件。我们结合上节课的LED点阵,一起来学习按键吧。我们做一个按键三连,分别按A、B和AB同时按,对应显示屏分别显示A、B和AB。 2. 准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3. 实验代码: 代码1: 按下micro:bit上的按键,让micro:bit上 LED点阵显示字符串。 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.4:microbit的可编程按键|micro:bit的可编程按键-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先删除指令方块“当开机时”和“无限循环”,然后点击“输入”模块,找到并拖出“当按钮A被按下时”指令方块。 (2)点击“基础”模块,找到并拖出指令方块“显示数字”放入“当按钮A被按下时”指令方块中,将“Hello!”改成“A”。 ![](media/09fe88931df31dc9215a4dc82bf6ded4.png) (3)复制代码串 ![](media/09fe88931df31dc9215a4dc82bf6ded4.png) 1次,点击“A”后面的下拉三角形按钮选择“B”,并将字符“A”改成“B”。 ![](media/36b0b98cd3caa7f9fa33c57598113782.png) (4)再复制代码串 ![](media/09fe88931df31dc9215a4dc82bf6ded4.png) 1次,点击“A”后面的下拉三角形按钮选择“A+B”,并将字符“A”改成“AB”。 ![](media/9f11601cb7e7c570c2aa2182d76204c3.png) 完整的代码程序: ![](media/6246ee12aecfc385d0600b6cbd47987f.png) ....................①按下micro: bit主板上的按键A。 ....................②LED点阵显示字符“A”。 ....................③按下micro: bit主板上的按键B。 ....................④LED点阵显示字符“B”。 ....................⑤同时按下micro: bit主板上的按键A和B。 ....................⑥LED点阵显示字符“AB” 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/50c59105d5a2409eea809e6ce73cf740.png) 代码2: 按下micro:bit主板上正面按键A,条形图高度值增加5,表现为LED点阵亮的行数增加;按下正面按键B,减少条形图高度,表现为LED点阵亮的行数减少。根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.4:microbit的可编程按键-2|micro:bit的可编程按键-2.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“LED启用false”放入“当开机时”指令方块中,点击“false”后面的下拉三角形按钮选择“true”。 ![](media/5ad6b9ff6d3457d88ab5fef92ed4c2fa.png) 2. 点击“输入”模块,找到并拖出“当按钮A被按下时”指令方块。 3. 点击“变量”模块,找到并拖出“以1为幅度更改item”指令方块放入“当按钮A被按下时”指令方块中。将数字1改成5。 ![](media/a99f4f853f49d3215114ef2455d74679.png) (5)复制代码串 ![](media/a99f4f853f49d3215114ef2455d74679.png) 1次,先点击“A”后面的下拉三角形按钮选择“B”,再将数字5改成 -5。 ![](media/57acf173bbf3838fdea50c8aa25620ea.png) 4. 点击“Led”模块,找到并拖出指令方块“绘制条图形”放入“无限循环”指令方块中,从“变量”模块中拖出变量指令方块“item”放入of后面的0处,再把to后面的0改成25。 ![](media/4f4d11d490a9b0fa49402f20ffaf0412.png) 5. 点击“逻辑”模块,找到并拖出指令方块“如果为...then...则”放入“无限循环”指令方块中,又从“逻辑”模块中拖出“=”方块放入“true”方框中,再从“变量”模块中拖出变量指令方块“item”放入“=”左侧,点击“=”后面下拉三角形按钮选择“\>”,将“\>”右侧的数字0改成25;最后从“变量”模块中拖出变量指令方块“将...inem....设为......”放入“如果为...then...则”指令方块中,将数字0改成25。 ![](media/d2cf1cde7961ae241c1521d754955e99.png) (7)复制代码串1次放入 ![](media/d2cf1cde7961ae241c1521d754955e99.png) “无限循环”指令方块中,将“\>”改成“\<”,数字25都改成0。 ![](media/5e406f9a3e5c02d3bd3f8b62505c4829.png) 完整的代码程序: ![](media/d1365367ca82758fbffd66038489b4d1.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②打开LED点阵屏。 ....................③设置变量“item”的初始值为0。 . ...................④按下micro: bit主板上的按键A。 ....................⑤以5为幅度更改变量值。 ....................⑥按下micro: bit主板上的按键B。 ....................⑦以 -5为幅度更改变量值。 ....................⑧在“无限循环”指令方块之内,程序循环运行。 ...................⑨点亮LED点阵中LED绘制条形图,最高点亮25个LED。 ....................⑩当变量“item”值大于25是正确的,就运行then下的程序。 ....................⑪将变量“item”值设置为25。 .....................⑫当变量“item”值小于0是正确的,就运行then下的程序。 ....................⑬将变量“item”值设置为0。 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/99dd466d69b41baa255c78f15dbb8efa.png) 4. 实验结果: 按照之前的方式将代码1下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,按下micro:bit主板上正面按键A,我们可以看到5×5 LED点阵显示字符“A”;按下micro:bit主板上正面按键B,我们可以看到5×5 LED点阵显示字符“B”,同时按下micro:bit主板上正面按键A和B,我们就可以看到5×5 LED点阵显示字符“AB”。 用同样的方式将代码2下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,按下micro:bit主板上正面按键A,条形图高度值增加5,表现为LED点阵亮的行数增加;按下正面按键B,减少条形图高度,表现为LED点阵亮的行数减少。 ### 5:micro:bit学习测温度 1. 实验说明: micro:bit主板实际上并不带温度传感器,而是采用nRF52833芯片内置的温度传感器进行温度检测,所以检测的温度更接近芯片的温度,可能与周围环境温度存在一定的误差。在这一课程中,我们先利用该传感器测试当前环境中的温度,并将测试结果在显示数据(设备)中显示,再通过设置该传感器检测的温度范围来控制LED点阵显示不同的图案。 注意:micro:bit主板的温度传感器在这里: ![](media/206c8ec1c3f11d2de8d0f42fdf5b6b47.png) 2. 准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3. 实验代码: 代码1: Micro:bit检测温度 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.5:microbit学习测温度\microbit学习测温度-1|micro:bit学习测温度-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到 USB”放入“当开机时”指令方块中。 ![](media/1915e53fe6802a7fd3063810500587df.png) (2)再点击“串行”模块,找到并拖出“串行写入数值 x=0”指令方块放入“无限循环”指令方块中。 ![](media/30e319d1bd59080bad299ffbaab09d32.png) (3)点击“输入”模块,找到并拖出指令方块“温度(℃)”放入=后面的数字0处,将x改成Temperature。 ![](media/d7b5eecd80630f1c7f778b0cf7e802bb.png) (4)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中,设置延时500毫秒。 ![](media/53dcb9f9aa194af0292a6378d14f76e9.png) 完整的代码程序: ![](media/5e21b15aa75763aa5953b373b57f4db4.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②串行 重定向到USB。 ..................③在“无限循环”指令方块之内,程序循环运行。 ..................④串行写入数值Temperature=温度(℃)。 ..................⑤延时时间500毫秒。 点击micro: bit在线编程工具的“jsJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/a257f37eb9ecce6a353a7f7beec8261d.png) 按照之前的方式将代码1下载至micro: bit,micro USB数据线不要拔下来,利用micro USB数据线上电,接下来点击显示数据(设备)按钮: ![](media/0d3198e0cb5460c9820bc2f016c0d7c1.png) 将显示温度数据,如下图所示: ![](media/6177222069a9583f2d8314d592fdb916.png) 在以上的测试中,将Micro:bit的nRF52833芯片接触,一段时间后,温度开始慢慢上升,此时室温约为35摄氏度,与水杯外侧接触后,温度上升到37摄氏度,符合预期。 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。CoolTerm的串口监视器显示当前环境中的温度值,如下图: ![](media/b3a18bca1b2a7b5337470735e5a0c5aa.png) ![](media/f78128c148de3862a3fe10d86f063e22.png) ![](media/13238e98c31d620f4ffd7742dd71c78d.png) ![](media/9c88bb875124738a55e5e0fd5bf957ca.png) 代码2: 通过温度控制mirco:bit上点阵显示不同图案(注意:代码程序中的温度值可以根据当地环境适当的调整) 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.5:microbit学习测温度\microbit学习测温度-2|micro:bit学习测温度-2.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下:(这里设置的温度值可以根据实际情况重新设置) (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“led 启用 fasle”放入“当开机时”指令方块中,点击“false”后面的下拉三角形按钮选择“true”。 ![](media/5ad6b9ff6d3457d88ab5fef92ed4c2fa.png) 2. 点击“逻辑”模块,先找到并拖出指令方块“如果为...then...否则”放入“无限循环”指令方块中,再拖出“=”方块放入“true”方框中。 ![](media/31f5a1b70af6d5219a994dece9f6b9d9.png) 3. 点击“输入”模块,找到并拖出指令方块“温度(℃)”放入“=”的左侧,点击“=”后面的下拉三角形按钮选择“≥”,再将“≥”右侧的0改成35。 ![](media/4949278fb3c82e2e312cc5df6112a71b.png) 4. 点击“基础”模块,找到并拖出指令方块“显示图标”放入如果为下面,又复制指令方块“显示图标”1次放入否则下面并点击“❤”图案后面的下拉三角形按钮选择“ ![](media/9fa58029eb504582ee5a915f591ea583.png) ”图案。 ![](media/bfdd150cb4822ad71f89af0d138bbc0d.png) 完整的代码程序: ![](media/3682d6188821c84b175e617a15b2609a.png) ................①“当开机时”指令方块仅运行一次以启动程序。 .................②打开LED点阵屏。 .................③在“无限循环”指令方块之内,程序循环运行。 ..................④当温度传感器检测到的外界温度≥35℃是正确的,就运行如果为下的程序。 ..................⑤LED点阵显示“❤”图案 ..................⑥当温度传感器检测到的外界温度≥35℃是不正确的,就运行否则下的程序。 ..................⑦LED点阵显示“![](media/9fa58029eb504582ee5a915f591ea583.png)”图案 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/3aab1302cef32173d746b97ac7ed5325.png) 4. 实验结果: 按照之前的方式将代码2下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,外界环境中的温度小于35℃时,micro:bit主板的5×5LED点阵中显示图案 ![](media/4b1765e12b413dc5d562f2a16d32392f.png),用手按住micro:bit主板的温度传感器,温度大于等于35℃时,5×5LED点阵中显示图案![](media/f2705fbc4886efcfaac96589ca255f66.png) 。 ### 6:micro:bit的地磁传感器(磁力计/指南针) ![](media/24c31bb0174e2ac672203e5c36c6875e.png) 1. 实验说明: 本实验项目主要介绍micro:bit地磁传感器的使用,地磁传感器除了检测地磁场强度外,还能当作指南针确定方向,同时也是航姿参考系统(AHRS)的重要组成部分。micro:bit V2主板采用的是LSM303AGR 地磁传感器,磁场动态范围为±50 gauss。在micro:bit V2主板中,磁力检测、指南针积木块均用到了磁力计模块,本实验中,将先介绍指南针,然后查看磁力计原始数据。常见的指南针主要部件是一根磁针,在地磁场的作用下可以转动并指向地磁北极(地磁北极是在地理南极附近),用来辨别方向。 micro:bit内部的一个地磁传感器(磁力计、指南针),我们可以读取这个磁力计的读数来判断方位,得到相对于北磁极的数值。返回值是0到360之间的数值,在磁力计首次开始工作(带到新位置后)时系统会自动要求我们对micro:bit主板校准,正确的校准方式是旋转micro:bit主板。需要注意的是,附近要是有金属物件可能会影响读数和校准准确性。 一些地球物理学家们确信,地球磁场是因为固态铁质内核被液态金属“海”所包围而形成的。磁力计指向的北是地磁北极,目前地磁南北极位置位于地理南北极地区,但并不与地球的南北极点完全重合,磁北极和真正的地理北极之间存在一个磁偏角。需要指出的是磁极位置是一直在变化的,历史上还出现过地磁逆转的情况。 我们称呼上的地磁南极,其实是物理上的磁北极,而地磁北极是物理上的磁南极,磁力线从磁北极出射,从磁南极进入,即地磁场从地理南极出来从地理北极进去。地磁南北级与地理南北级基本相反,但不在同一条线上也就是说地磁南极在地理北极附近,地磁北极在地理南极附近,地理南北极的连线和地磁南北级的连线构成磁偏角,即地磁北极(指南针指的方向)与地理北极间的夹角。 2. 准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3. 实验代码: 代码1: 按下按键A的时候,可以在屏幕上显示磁力计的读数。 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|..\1.Makecode教程\micro:bit测试程序\8.6:microbit的地磁传感器(磁力计指南针)\microbit的地磁传感器-1|micro:bit的地磁传感器-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: 1. 先点击“输入”模块,再点击“输入”模块下的“更多”,找到并拖出指令方块“校准指南针”放入“当开机时”指令方块中。 ![](media/b08bfbd72a4583c881f9d442684ee1e7.png) (2)点击“输入”模块,找到并拖出“当按扭 A 被按下时”指令方块。 (3)点击“基础”模块,找到并拖出指令方块“显示数字”放入“当按扭 A 被按下时”指令方块中,再点击“输入”模块,找到并拖出指令方块“指南针朝度(℃)”放入指令方块“显示数字”中。 ![](media/31b1dd0214b5a24da40fe7fca186f18a.png) 完整的代码程序: ![](media/33b23559953cc4c7eb1f802605c6492b.png) ................①“当开机时”指令方块仅运行一次以启动程序。 .................②校准指南针。 .................③按下micro:bit主板上的按键A。 .................④LED点阵显示指南针朝向角度。 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/f9a5d93dc6aa46fa7adf1316d41e4435.png) 代码说明:首先必须对micro:bit进行校准,因为每个地方地磁场不同,对结果有比较大的的影响,如果是第一次使用指南针,micro:bit会自动提示需要校准。 按照之前的方式将代码1下载至micro: bit,micro USB数据线不要拔下来,利用micro USB数据线上电,按下micro:bit主板上正面按键A时,micro:bit主板首先提示校准,屏幕(LED点阵)提示:“TILT TO FILL SCREEN”,然后进入校准界面,校准方式为:旋转micro:bit主板,使得屏幕(LED点阵)画一个封闭的正方形(25个LED都点亮),如下图所示: ![](media/cb87efaf114be98927923ecd122a97da.png) 当封闭的正方形画好后,会显示一个“笑脸”图案 ![](media/2c899003f048c2fa8418cad7144574a7.png) ,表示校准完成。 校准完成后,当每次按下按键A的时候,直接在屏幕上显示磁力计读数,北、东、南、西对应0°、90°、180°、270°。 代码2: 朝不同的方向旋转磁力计,LED点阵显示对应的方向图案。 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.6:microbit的地磁传感器(磁力计指南针)\microbit的地磁传感器-2|micro:bit的地磁传感器-2.hex| ![](media/99b7430cb5e7695fcd0a9e294f10470a.png) 这个模块意思是,在循环中,不断读取磁力计的读数,并根据读数范围判断所指方向,让箭头指向当前的地磁北方。 ![](media/d1a4e9f62bdf690ba809ae35c347b233.png) 如图所示,如果读数在292.5和337.5之间,就让显示屏显示一个指向右上方的箭头,由于代码里不能输入0.5,所以取的判断数值是293和338。之后再加入其它逻辑判断条件,就得到了完整的代码。 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“输入”模块,再点击“输入”模块下的“更多”,找到并拖出指令方块“校准指南针”放入“当开机时”指令方块中。 ![](media/b08bfbd72a4583c881f9d442684ee1e7.png) 2. 先点击“变量”模块,找到并拖出“将 X 设为0”放入无限循环指令模块中 ![](media/082ba63b44114da2f5a4ed308fc5e4bf.png) (3)点击“输入”模块,找到并拖出指令方块“指南针朝度(℃)”放入指令方块“将 X 设为0”中。 ![](media/7f2b98f14d516f5b2c5ea906fe578c20.png) (4)点击“逻辑”模块,找到并拖出指令方块“如果为...then...则”放入“无限循环”指令方块中,点击 ![](media/bf972b006ad6d05686352c4785e54994.png) 标志6次。 (5)又点击“逻辑”模块,找到并拖出“与”方块放入如果为后面的true方框中,再拖出“=”方块放入“与”左侧,点击“变量”模块,找到并拖出变量指令方块“x”放入“=”左侧,将“=”改成“≥”,“≥”右侧的0改成293。再复制条件代码块“x≥293”1次放入“与”右侧,将“≥”改成“\<”,数字293改成338。复制条件代码块“x≥293 and x\<338 ”6次,放入else if 后面的方框中,将条件分别改成“x≥23 and x\<68 ”、“x≥68 and x\<113 ”、“x≥113 and x\<158 ”、“x≥158 and x\<203 ”、“x≥203 and x\<248 ”、“x≥248 and x\<293 ”。 ![](media/dac374102ec2890cdc1ec6c9ac2c6eee.png) (6)点击“基础”模块,找到并拖出指令方块“显示LED”放入第一个 与 下面,点击指令方块“显示 led”上灰蓝色小方框变成白色组成“ ![](media/eab025b80ef24f1d5351bd3e06221bad.png) ”图案。 ![](media/18b2ff873c9d02f932ccca8759edf4cf.png) (7)再从“基础”模块,找到并拖出指令方块“显示LED”7次分别放入第二个、第三个、第四个、第五个、第六个then下面和else下面,对应的分别点击指令方块“x leds”上灰蓝色小方框变成白色组成“ ![](media/4c73992fa4dfc6a2735b49ea8f000ed6.png)”图案、“![](media/0771b8fd797a3e945a01ec1525ba4a9d.png)”图案、“![](media/41eb716a282d52483e8467704613d034.png)”图案、“![](media/2cae18294b329c10ecdefd768d6954e0.png)”图案、“![](media/14b893d1a7157d72209b975d0df8d890.png)”图案、“![](media/c362406f55115926523a0f60e16828b6.png)”图案、“![](media/d16918782eb53d860d91e4a3a115168c.png) ”图案。 完整的代码程序: ![](media/7042fa2032f4d71a8837f0437dbe09d6.png) ..................①“当开机时”指令方块仅运行一次以启动程序。 ..................②校准指南针。 ..................③在“无限循环”指令方块之内,程序循环运行。 ..................④将指南针朝向的角度存储到变量x中。 ..................⑤当293≤x\<338成立时,就运行与下的程序。 ..................⑥LED点阵显示“![](media/eab025b80ef24f1d5351bd3e06221bad.png)”图案 ..................⑦当23≤x\<68成立时,就运行与下的程序。 ..................⑧LED点阵显示“![](media/4c73992fa4dfc6a2735b49ea8f000ed6.png)”图案 ![](media/08c6ef5beeaa82779aa3a4ec675cb2a3.png) ..................⑨当68≤x\<113成立时,就运行与下的程序。 ..................⑩LED点阵显示“![](media/0771b8fd797a3e945a01ec1525ba4a9d.png)”图案 ..................⑪当113≤x\<158成立时,就运行与下的程序。 ..................⑫LED点阵显示“![](media/41eb716a282d52483e8467704613d034.png)”图案 ..................⑬当158≤x\<203成立时,就运行与下的程序。 ..................⑭LED点阵显示“![](media/2cae18294b329c10ecdefd768d6954e0.png)”图案 ![](media/dcdce943d4a0074f50b27770ce6b2010.png) ..................⑮当203≤x\<248成立时,就运行与下的程序。 ..................⑯LED点阵显示“![](media/14b893d1a7157d72209b975d0df8d890.png)”图案 ..................⑰当248≤x\<293成立时,就运行与下的程序。 ..................⑱LED点阵显示“![](media/c362406f55115926523a0f60e16828b6.png)”图案 ..................⑲当以上的x范围都不成立时,就运行 否则 下的程序。 ..................⑳LED点阵显示“![](media/d16918782eb53d860d91e4a3a115168c.png)”图案 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/c38858ca8e12ce4ca59759cff04ac2d7.png) ![](media/1d4fdac44bf4e1629145fac97f627c24.png) 4. 实验结果: 按照之前的方式将代码2下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,提示校准(校准方法请参考:上面代码1部分),校准完成后,旋转移动micro:bit主板,可以看到micro:bit主板上LED点阵显示方向图案。 ### 7:micro:bit的加速度传感器(加速度计) ![](media/24c31bb0174e2ac672203e5c36c6875e.png) 1. 实验说明: micro:bit V2主板内置有LSM303AGR 重力加速度传感器(加速度计),其具有8/10/12 bits的分辨率,代码科设置量程为1g、2g、4g,、8g。 我们常使用加速度计来检测机器的姿态。 在本实验项目中,将介绍加速度传感器(加速度计)对几个特殊姿态的检测,之后来查看加速度传感器输出的三轴原始数据。 2. 准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3. 实验代码: 代码1: 对micro:bit不同的操作,LED点阵显示对应的数字。 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../\1.Makecode教程\micro:bit测试程序\8.7:microbit的加速度传感器(加速度计)\microbit的加速度传感器-1|micro:bit的加速度传感器-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“输入”模块,找到并拖出指令方块“当震动”。 (2)点击“基础”模块,找到并拖出指令方块“显示数字” 放入指令方块“当震动”中,将数字0改成1。 ![](media/09131188cfd5d2de777d98617247b130.png) (3)复制代码串 ![](media/09131188cfd5d2de777d98617247b130.png) 7次,先后分别点击“震动”后面的下拉三角形按钮选择“logo up”、“logo down”、“screen up”、“screen down”、“tilt left”、“tilt right”、“free fall”,再将数字1分别对应的改成2、3、4、5、6、7、8。 完整的代码程序: ![](media/f950dc88b68179018b60f9870154a7c4.png) ...................①振动microbit主板。 ...................②LED点阵显示数字1。 ...................③microbit主板的徽标朝上。 ...................④LED点阵显示数字2。 ...................⑤microbit主板的徽标朝下。 ...................⑥LED点阵显示数字3。 ...................⑦microbit主板屏幕朝上。 ...................⑧LED点阵显示数字4。 ...................⑨microbit主板屏幕朝下。 ...................⑩LED点阵显示数字5。 ...................⑪microbit主板向左倾斜。 ...................⑫LED点阵显示数字6。 ...................⑬microbit主板向右倾斜。 ...................⑭LED点阵显示数字7。 ...................⑮microbit主板自由落体。 ...................⑯LED点阵显示数字8。 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/093bcf4a15c159fe541c5b2076df319d.png) 代码2: 检测加速度在X轴,Y轴,Z轴的不同的值 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../\1.Makecode教程\micro:bit测试程序\8.7:microbit的加速度传感器(加速度计)\microbit的加速度传感器-1|micro:bit的加速度传感器-2.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到USB”放入“当开机时”指令方块中。 ![](media/6187584e585ae7dd1e9855a5f1b90956.png) (2)再从“串行”模块,找到并拖出指令方块“串行写入数值 x =0”放入指令方块“无限循环”中。 ![](media/bfefae977b13d8ad03f019f09ce44800.png) (3)点击“输入”模块,找到并拖出指令方块“加速度值(mg) x”放入指令方块“串行写入数值 x =0”中0处,并将“=”左侧的“x”改成大写的“X”。 ![](media/c9be35ca55f0e3ac75d1df68d67ae24f.png) (4)点击“基础”模块,找到并拖出指令方块“暂停(ms) 100”放入“无限循环”指令方块中,设置延时100毫秒。 ![](media/95c316999efbb55ac22382a00ba28381.png) (5)复制代码串 ![](media/95c316999efbb55ac22382a00ba28381.png) 2次放入“无限循环”指令方块中,将先“=”左侧的“X”分别改成“Y”、“Z”,再分别对应的点击“x”后面的下拉三角形按钮选择“y”、“z”。 ![](media/e01c5db506a5d2838d8907ec1b1a72d5.png) 完整的代码程序: ![](media/7114c02d1d0b5d2f9f5118e772f45c23.png) .................①“当开机时”指令方块仅运行一次以启动程序。 .................②串行重定向到USB。 .................③在“无限循环”指令方块之内,程序循环运行。 .................④串行写入数值X=x轴的加数度值(mg) ....................⑤延时时间100毫秒。 ....................⑥串行写入数值Y=y轴的加数度值(mg) ....................⑦延时时间100毫秒 ....................⑧串行写入数值Z=z轴的加数度值(mg) ....................⑨延时时间100毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/287f1004bbcaf169d90e74fff054cbca.png) 按照之前的方式将代码1下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,打开数据显示(设备)按钮。 ![](media/821a64a53c3a9709ff556e71b070f4dd.png) 首先,查阅MMA8653FC数据手册,以及micro:bit的硬件原理图得知,micro:bit加速度计坐标如下图所示: ![](media/6303a0ac122680207fe856d9be38d01c.png) 显示出如下界面:分别显示了加速度在X轴,Y轴,Z轴的分解,以及加速度的合成(重力加速度及其它外力作用的加速度合成),如下图: ![](media/ded4e05f2b15d694e2061159628574dc.png) 实验中,先将加速计Z轴朝上,然后再将加速计X轴朝上,最后将加速计Z轴朝上,可得数据变化如上图所示 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。CoolTerm串口监视器分别显示了加速度在X轴、Y轴、Z轴的分解,以及加速度的合成(重力加速度及其它外力作用的加速度合成),先将加速计Z轴朝上,然后再将加速计X轴朝上,最后将加速计Z轴朝上,可得数据变化如下图: ![](media/b4f4201cccf6ac0dadffb952b7596895.png) 4. 实验结果: 按照之前的方式将代码1下载到micro:bit,利用micro USB数据线上电,将micro:bit主板晃动,则可见micro:bit显示数字1(表明只要有晃动,无论朝哪个方向晃动,该条件都将满足)。 当micro:bit主板的Logo朝上时,LED点阵显示数字2,Logo朝上示意图如下所示: ![](media/1600323e3e61e331c248cbeda5ccdcfc.jpg) 同理,micro:bit主板的Logo朝上时,LED点阵显示数字3(倒立的3),Logo朝下示意图如下所示: ![](media/3be80acf957e53117f695801ce19c449.jpg) 当屏幕朝上(指的是LED点阵朝上)时,LED点阵显示数字4。如下图所示: ![](media/5797dd7be9a9c2d3226123e0c29db0bd.jpg) 同理,当屏幕朝下(指的是LED点阵朝下)时,LED点阵显示数字5。 当micro:bit 主板向左倾斜(是指LED点阵先朝上,然后再往左边倾斜)时,LED点阵显示数字6。如下图所示: ![](media/326095934bcff0a925b4f9a09d6cf7d2.jpg) 同理,当micro:bit主板向右倾斜(是指LED点阵先朝上,然后再往右边倾斜)时,LED点阵显示数字7。如下图所示: ![](media/185b0ac204e9b2c54dd8fa93d852568c.jpg) 当不小心碰到micro:bit主板使其从桌面掉落,则为做自由落体运动,此时,micro:bit主板满足自由落体的条件,则LED点阵显示数字8。(注意:此方法操作时,很容易把micro:bit主板摔坏,不建议操作) 注意:(3g、6g、8g, 如果需要满足此条件,则需要达到3倍,6倍,8倍重力加速度甩动micro:bit主板。如果你们有兴趣的话,这部分代码可以自己添加) ### 8:micro:bit的光照强度检测 ![](media/8c3f540a07aab97e1608ba8770837f7b.png) 1. 实验说明: 本实验将介绍micro:bit对外界光照强度的检测,由于micro:bit并不自带光敏传感器,对外界光照强度的检测是通过LED矩阵进行的,LED矩阵被用来感知周围的光,并反复地将LED转换成输入,并采样电压衰减时间。这样检测出来的光照强度是一个相对值。 2. 准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3. 实验代码: 对micro:bit不同的操作,LED点阵显示对应的数字。 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.8:microbit的光照强度检测|micro:bit的光照强度检测.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行写入数值 USB”放入“当开机时”指令方块中。 ![](media/6187584e585ae7dd1e9855a5f1b90956.png) (2)再从“串行”模块,找到并拖出指令方块“串行写入 x =0”放入指令方块“无限循环”中。 ![](media/bfefae977b13d8ad03f019f09ce44800.png) (3)点击“输入”模块,找到并拖出指令方块“亮度级别”放入指令方块“ 串行写入x =0”中0处,并将“=”左侧的“x”改成大写的“Light intensity”。 ![](media/dbbac74f78667f34537daa85bad2c04d.png) (4)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中,设置延时100毫秒。 ![](media/17ca110943710449a4d327b75caadab6.png) 完整的代码程序: ![](media/ebd01529974676325843f65c5fb916c2.png) .................①“当开机时”指令方块仅运行一次以启动程序。 .................②串行重定向到USB。 .................③在“无限循环”指令方块之内,程序循环运行。 .................④串行写入数值Light intensity=光照强度。 ....................⑤延时时间100毫秒。 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/0a88bf1ec3e383d9ccce2179eedebb9e.png) 4. 实验结果: 按照之前的方式将代码下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,打开数据显示(设备)按钮。 ![](media/04b472326485cf676cdb4dd61ca6ef1a.png) 数据显示器显示亮度级别值,用手全部遮住micro:bit的LED点阵,亮度级别约为0;然后将micro:bit的LED点阵放置于光照下,随着光照强度增强,亮度级别值也在逐渐增大。 ![](media/d7f1751ea1e6f251376dee5390ed21fa.png) 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。这样,CoolTerm串口监视器显示光线亮度级别值。 ![](media/77a6de8ab9b171353693610a09f3a83c.png) ### 9:扬声器 ![](media/ac515b9ae8891dc32f368a29f194a2fb.png) 1.实验说明: micro:bit主板有内置扬声器,这使得在你的项目中添加声音变得非常容易。通过编程使扬声器发出各种各样的音调,例如编写一首歌曲:《欢乐颂》,让扬声器播放出来。 2.准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3.实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode 教程\micro:bit测试程序\8.9:扬声器|microbit-扬声器.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)从“基础”模块中找到并拖出指令方块“显示图标”放入“当开机时”指令方块中,点击下拉三角形选择“ ![](media/7f7aa904c35f83b61c7c560ad1e40d2a.png) ”图案。 ![](media/a9131d0acf73ac4caca11fec179ce059.png) (2)点击“音乐”模块,找到并拖出指令方块“播放声音 咯咯声 值到结束”放入“”指令方块中,再从“基础”模块中找到并拖出指令方块“暂停(ms) 100”放入“无限循环”指令方块中,将100改成1000。 ![](media/200a76a043f9e4abe1aa9c1c77fd9904.png) (3)复制代码串 ![](media/200a76a043f9e4abe1aa9c1c77fd9904.png) 3次也放入“无限循环”指令方块中,点击下拉三角形分别选择“快乐”,”你好”,”打哈欠”。 ![](media/e8cb8be5cba16b281a997dd76f6cfe86.png) 完整的代码程序: ![](media/a8ffa4409786d41f2dfeff8f560f5057.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②LED点阵屏显示“![](media/7f7aa904c35f83b61c7c560ad1e40d2a.png)”图案。 ....................③在“无限循环”指令方块之内,程序循环运行。 ....................④蜂鸣器发出“咯咯声”音 ....................⑤延时1000毫秒 ....................⑥蜂鸣器发出“快乐”音 ....................⑦延时1000毫秒 ....................⑧蜂鸣器发出“你好”音 ....................⑨延时1000毫秒 ....................⑩蜂鸣器发出“打哈欠”音 ....................⑪延时1000毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/c07acaae7dabac8d2e65882007d36e5b.png) 4.实验现象: 按照之前的方式将实验代码下载到micro:bit板,利用micro USB数据线上电,micro:bit主板上的扬声器发出声音且LED点阵显示音乐标志图案。 ### 10:触摸感应logo ![](media/644695850097c5ade080bb4848b4b481.png) 1. 实验说明: 如果你有了micro:bit主板,你可以在你的项目中使用金色的触摸感应logo作为另一个输入,这就像多了一个按钮。触摸感应采用的是电容式触摸传感器,当你手指按下(或触摸)它时,它就能感应到电场的微小变化----就像你的手机或平板电脑屏幕一样。当你像按按钮一样按下它时,你可以在程序中触发事件。 2.准备: (1)通过micro USB线连接micro:bit和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3.实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.10:触摸感应logo|logo.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)删除掉“当开机时”指令方块和“无限循环”指令方块。 (2)从“输入”模块中找到并拖出“当微标 被按下”指令方块,点击下拉三角形按钮选择 被触摸。 ![](media/dbf69d641bd8a0cb7043147f6532e63c.png) 3. 先点击“变量”模块,再点击“设置变量”按钮,在出现的对话框中输入start,点击OK,这样就创建了变量“start”。从“变量”模块中拖出变量指令方块“将start 设为 0”放入指令方块“当微标被触摸”中。 ![](media/daf4edd83cd8d8a94aee60351a4c3751.png) 4. 点击“输入”模块下的更多,找到并拖出“运行时间(ms)”放入变量指令方块“将start 设为 0”的数字0处。 ![](media/170395914011ae23a4db9e07a27888b5.png) 5. 从“基础”模块中找到并拖出指令方块“显示图标❤”放入“当微标被触摸”指令方块中。 ![](media/cf51b0e625fa8149d2d6ce00387bffae.png) 6. 从“输入”模块中找到并拖出“当微标被按下”指令方块,选择被松开,接着用同样的方法再创建变量“time”。从“变量”模块中拖出变量指令方块“将 time 设为0”放入指令方块“当微标被松开”中,并从“数学”模块中找到并拖出“0-0”方块放入变量指令方块“将 time 设为0”的数字0处。 ![](media/5945d97a4953046db00e0d9ab6c83238.png) 7. 点击“输入”模块下的更多,找到并拖出“运行时间(ms)”放入“0-0”方块的左侧数字0处,再从“变量”模块中拖出变量指令方块“start”放入右侧数字0处。 ![](media/90985ecdd338bd4e5297449cb1bbea5a.png) 8. 先从“基础”模块中找到并拖出指令方块“显示数字”放入“当微标被松开”指令方块中,再从“数学”模块中找到并拖出方块“平方根 0 ”放入数字0处,点击下拉三角形按钮选择 整数÷。 ![](media/deb92aa25372fd930364cf375eafb8cd.png) 9. 从“变量”模块中找到并拖出变量指令方块“time”放入右侧数字0处,再把右侧的数字0改成1000。 ![](media/2f1aeb983b01aa1c9df5752752fb7f17.png) 完整的代码程序: ![](media/7a83fbcc1d95615afa1b545a86ab208e.png) ....................①手触摸microbit主板上的logo标志 ....................②将running time值赋给于变量start ....................③microbit主板的LED点阵显示“❤”图案 ....................③手释放microbit主板上的logo标志 ....................④将running time-变量start的值赋给于变量time ....................⑤LED点阵屏显示变量time除于1000的取整 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/200dbc88e6f0da02e512fa704f8186a8.png) 4.实验现象: 按照之前的方式将实验代码下载到micro:bit板,利用micro USB数据线上电,手指按住micro:bit主板上“Logo”标志处,micro:bit主板上的LED点阵显示“❤”图案;手指松开micro:bit主板上“Logo”标志处,会出现数字。 ### 11:麦克风 ![](media/3073a8af772ab91ecf264843b37d3b74.png)![](media/7f0741158e734ff8449d5b87d5ba85f4.png) 1.实验说明: micro:bit 主板有一个内置麦克风,可以测量环境的声音程度。你可以使用它作为一个简单的输入---当你鼓掌时,micro:bit主板上前面内置麦克风LED指示灯会被打开。它还可以测量声音的强度,所以你可以制作一个噪音等级表或与音乐合拍的迪斯科灯光。麦克风是在micro:bit 主板的背面,而在前面,你会发现一个内置麦克风LED指示灯,还有紧挨着让声音进入麦克风的孔。当你micro:bit主板在测量声音级别时,它就会亮起来。 2.准备: (1)通过micro USB线连接micro:bit主板和电脑。 (2)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3.实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.11:麦克风\麦克风-2|microbit-麦克风-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)删除掉“当开机时”指令方块和“无限循环”指令方块。 (2)先从“输入”模块中找到并拖出“大声 声音”指令方块,再从“基础”模块中找到并拖出指令方块“显示图标”放入“但开机时”指令方块中。 ![](media/c0d7f2f20c780c337c7f445986ef5946.png) 1. 复制代码串 ![](media/c0d7f2f20c780c337c7f445986ef5946.png)1次,点击“大声”后面的下拉三角形按钮选择“安静”,再点击❤后面的下拉三角形按钮选择![](media/9a40d2f51ed0a372a82e559cdb2ca0dd.png) 。 ![](media/80861d37f15b3fd34d115ab596dd19a1.png) 完整的代码程序: ![](media/5294b7d76c40871df0b9ae907f251915.png) ....................①microbit主板上的麦克风检测到声音 ....................②LED点阵屏显示“❤”图案 ....................③microbit主板上的麦克风未检测到声音 ....................④LED点阵屏显示“![](media/04fdfc9060943954e7938bb1a741d626.png)”图案 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/010908e5a7247a5598f56682a793ceb4.png) 4.实验现象1: 按照之前的方式将实验代码1下载到micro:bit板,利用micro USB数据线上电,当你鼓掌时,micro:bit 主板上的LED点阵显示“❤”图案;当外界环境安静时,micro:bit 主板上的LED点阵显示“ ![](media/04fdfc9060943954e7938bb1a741d626.png) ”图案。 5. 实验代码2: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.11:麦克风\麦克风-2|microbit-麦克风-2.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重新 定向到 USB”放入“当开机时”指令方块中。 ![](media/1cd5710476f4682bb5f92c51072d5d24.png) (2)先点击“变量”模块,再点击“设置变量”按钮,在出现的对话框中输入maxSound,点击OK,这样就创建了变量“maxSound”。从“变量”模块中拖出变量指令方块“将maxSound 设为 0”放入指令方块“当开机时”中。 ![](media/b6de6aa6a4b130e02657dd8f6b1f413a.png) 2. 先点击“逻辑”模块,找到并拖出“如果为...则....否则”放入“无限循环”指令方块中,再从“输入”模块中找到并拖出“当按钮 A 被按下”指令方块放入then处。 ![](media/41dfc4e19a7f130b54bd19373ddd48ca.png) 3. 先从“基础”模块中找到并拖出指令方块“显示数字”放入如果为下,再从“变量”模块中拖出变量指令方块“maxSound”放入数字0处。 ![](media/bc762c95edebfda41dd7f13c0cab61ca.png) 4. 用相同的方法创建变量“soundLevel”,再从“变量”模块中拖出变量指令方块“将soundLevel 设为 0”放入否则下,然后从“输入”模块中找到并拖出“声音响度”指令方块放入数字0处。 ![](media/ec2bf2b85db1ae161e2dfeb917b6dd8b.png) 5. 先点击“Led”模块,找到并拖出指令方块“绘制条形图值为 0 最高 0”也放入否则下,再从“变量”模块中拖出变量指令方块“soundLevel”放入值为后面的数字0处,然后将 最高 后面的数字0改成255。 ![](media/e714988085a64834c1ce381b0085f5fd.png) 6. 先从“逻辑”模块中找到并拖出“如果为 true 则 ”放入“否则”下,再从“逻辑”模块中拖出“0 \> 0”方块放入then处,然后从“变量”模块中拖出变量指令方块“soundLevel”放入左侧的数字0处,最后从“变量”模块中拖出变量指令方块“maxSound”放入右侧的数字0处。 ![](media/bafec879ec09f81c1fac2ca94470e397.png) 7. 从“变量”模块中拖出变量指令方块“将 maxSound 设为0”放入第2个如果为下,接着又从“变量”模块中拖出变量指令方块“soundLevel”放入数字0处。 ![](media/6f785f7a07207cafbd29adb26dd6c8ce.png) 完整的代码程序: ![](media/fb7685d1417d647d2a239e52c40dacf8.png) .................①“当开机时”指令方块仅运行一次以启动程序。 .................②串行重定向到USB。 .................③将变量maxSound初始值为0 .................④在“无限循环”指令方块之内,程序循环运行 .................⑤如果按键A按下时,执行then下程序 .................⑥LED点阵屏显示麦克风检测到的此时环境中最大声音级别值 .................⑦上述条件不成立时,执行else下程序 .................⑧将声音级别值赋给于变量soundLevel .................⑨LED点阵中LED点亮的亮度级别,最高亮度为255。 .................⑩否则如果麦克风检测到的声音级别值大于此时环境中最大声音级别值 .................⑪将变量麦克风检测到的声音级别值赋给于变量soundLevel 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/1b0232cc0f4e3aac5736741e85019a95.png) 6. 实验现象2: 按照之前的方式将实验代码2下载到micro:bit板,利用micro USB数据线上电,点击“显示控制台(设备)”按钮: ![](media/e22507af4953df977269bbdb2463d69e.png) 显示串口输出数据,当外界环境的声音增大时,串口输出的声音级别值也增大,如下图所示: ![](media/50b81518d9f7925b0c20476ab1f64185.png) 并且,当你按下micro:bit主板上的A键时,micro:bit主板上的LED点阵显示检测到的此时环境中最大声音级别值(这里需要注意:通过按micro:bit背面的重置按钮重置最大值。);当鼓掌时,LED点阵显示声音级别大小图案。 ### 12:micro:bit的蓝牙无线通信 ![](media/55b2424d88ba1ba8a711c49418ca8dc6.png) 1. 实验说明: micro:bit主板自带了[nRF52833](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52833)处理器(内置蓝牙5.1低功耗的BLE(蓝牙 Low Energy)设备)以及2.4GHz天线,可进行蓝牙无线通信和2.4GHz无线通信。使得micro:bit主板可以与各种蓝牙设备进行通信,包括智能手机和平板电脑。 在本实验中,主要讲解新款的micro:bit主板实现蓝牙无线通信功能,我们可以通过连接蓝牙,实现无线传输代码(信号)功能。我们利用一个苹果系统设备(手机/iPad)和micro:bit 主板连接,实现无线传输功能。设置安卓系统手机实现无线传输方法和苹果系统设备(手机/iPad)类似,这里就不一一介绍了。 2. 准备: 1. 通过micro USB线将micro:bit主板连接到电脑上。 2. 苹果系统设备(手机/iPad)或安卓系统手机。 3. 实验步骤: (1)如果你的智能手机/iPad是苹果系统的,需要先在电脑上进入网页: ,点击“Download pairing HEX file”下载micro:bit的固件到创建的文件夹中或电脑桌面上,并将下载好的micro:bit固件烧入micro:bit主板中。(这一步只针对于苹果系统的智能手机/iPad) ![](media/cfaf7f8ae83cbe2636c39162a78adc7f.png) ![](media/4bcbd2456b3502d254617622b0f8707b.png) ![](media/ed8937c877dc004629f8afeabc8625b1.png) (2)在苹果系统设备(手机/iPad)上打开 ![](media/27924fdb3d67692df7c63d8d0fb72287.png) ,在App Store的搜索框中输入“micro bit”,然后选中micro:bit 选项,会出现下载界面(如下图所示:),点击“ ![](media/962a57f92b78eea1f0e3e81463497a9c.png) ”,就可以下载安装对应的APP。 ![](media/66d1f34d8d4c52e2b7c0ce10e602a063.png) (3)苹果系统设备(手机/iPad)和micro:bit主板配对连接。 1. 打开苹果系统设备(手机/iPad)上的蓝牙。 2. APP安装成功后,点击 ![](media/ddfd27bdd24da96eb998ccc2e13fcf72.png) 打开APP,先确定micro USB数据线已经将micro:bit主板和电脑连接上,再点击APP的第一项“Choose micro:bit”,开始配对蓝牙。 ![](media/34f5fbb1c0c371970d1aec6c59c5cbb5.png) 3. 点击配对一个新的micro:bit,开始配对。 ![](media/e20270a0ade9c00b61198b26fc2fd83b.png) 4. 根据提示,首先同时按住micro:bit主板上的按键A和B,然后按下micro:bit主板后面的复位&电源按钮几秒钟(按键A和B不能松开),再松开复位&电源按钮,micro:bit主板上LED点阵会显示一个密码图案。最后松开micro:bit主板上的按键A和B,接着点击“下一步”。 ![](media/c00520400ecd1f20f958c1c6d1a3c907.png) ![](media/cabc60d7f8a030f5c9d86ac7de6c7bd7.png) 5. 在苹果系统手机/iPad上设置密码图案,使图案和micro:bit主板上显示的密码图案一样,点击“下一步”。 ![](media/9411a5280e6f3b0d45306a31f80c1b38.png) 6. 点击“下一步”,出现对话框,在对话框中点击“Pair”。几秒钟后,配对成功,同时micro:bit主板上的LED点阵显示“√”图案。 ![](media/7b56c56e10415ac2881ac69448b4ad3c.png)![](media/803cb5cf5f7d595581a11f5e6b7e61ed.png) ![](media/dc570950dd81f427edb5ea58f50b3a7e.png)![](media/f72e83dc6276d520e82c349659106e1a.png) (3)蓝牙配对成功后,开始利用APP编写代码,并上传代码。 a.点击第二项“Create Code”,进入编程界面,开始编写代码程序。(点击 ![](media/f3e9cc7884f7bba807fa4633c429422b.png),出现对话框![](media/e081360be7c91b7a156b01a787e4a58c.png) ,在对话框中直接点击“Create √”后就进入编程界面) ![](media/d54bf2d1c01cd3c18544009b1f9dc5a0.png) ![](media/5fa7ffca1ce23b1ebc9a834934638273.png) ![](media/a2258b54f29f9e9cfcb0adc3efb65eb1.png) ![](media/ce3027d92602f98c35a100435766f42a.png) b. 将代码程序项目名称设置为“1”,点击保存图案“ ![](media/a32c2d832ab38d19eb623108143c744e.png) ”,保存代码程序。 ![](media/f069f9fa1724e81c8ab4b1b0af1c3449.png) c.项目代码程序保存成功后,点击第三项“Flash”进入上传代码程序界面。默认选择代码程序是刚刚保存的项目名称为“1”的代码程序,然后点击“Flash”上传代码程序“1”。 ![](media/c1661720ea2eaa521ff31a778501eb23.png) ![](media/350abcbb09d431d40427f34c3764f2eb.png) ![](media/4863bf826f119805a6a9bf9c12d5ec81.png) d.几秒钟后,代码程序“1”上传成功,会显示如下图。然后micro:bit主板上的LED点阵显示跳跃的“心”对应图案。 ![](media/ebfd31347a0553de0be4e01636652a15.png) 上面的实验是使用micro:bit自带的传感器模块和LED点阵,接下来的实验都是micro:bit与keyes Micro:bit mini smart robot car扩展板上的传感器模块、无源蜂鸣器,和2个RGB灯等的拓展实验。 (特别注意:为了防止烧坏micro:bit主板,micro:bit主板安装在小车扩展板之前先要断开micro USB 线与micro:bit主板的连接和关闭小车扩展板上电源(拨动POWER拨码开关到OFF一端);同理,micro:bit主板从小车扩展板拿下来之前也要先断开micro USB 线与micro:bit主板的连接和关闭小车扩展板上电源(拨动POWER拨码开关到OFF一端)。) ### 13:无源蜂鸣器播放音乐 ![](media/da6ec0cad581a9429307efe57c566b70.png) 1.实验说明: 我们可以用micro:bit制作许多互动作品,其中最常用的是声光显示。之前所有的实验都和LED有关。然而,这个实验中的电路可以产生声音。通常情况下,实验是用蜂鸣器或扬声器进行的,而蜂鸣器更简单、更容易使用。 我们这里介绍的蜂鸣器是无源蜂鸣器。它不能由自身驱动,而是由外部脉冲频率驱动。不同的频率产生不同的声音。我们可以使用micro:bit来编码歌曲的旋律,这实际上是非常有趣和简单的。 蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种。无源蜂鸣器利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。 无源蜂鸣器的工作原理与扬声器相同,在使用方波信号源驱动的应反向并联一个二极管,防止突然断电时产生的高压反向电动势击穿其他元件以及使用寿命缩短。   有源蜂鸣器往往比无源蜂鸣器的贵,就是因为里面多个震荡电路,只需接入额定电压的直流电即可发出指定频率的声音,频率由内部振荡电路决定,无法改变。而无源蜂鸣器内部不带振荡源,直流信号无法令其鸣叫,须用方波驱动。 无源蜂鸣器的优点是:   (1)制作成本低;   (2)声音频率范围宽,可高分贝的发出某些频率的超声波以及可以做出“多来米发索拉西”的效果;   (3)在一些特例中,可以和LED复用一个控制IO口。 无源蜂鸣器频率是由英文和数字组成的音名,选择不同的音名就能改变不同的频率啦。声音频率的高低叫做音调。在音乐课上,老师教过我们唱“1(Do)、2(Re)、3(Mi)、4(Fa) 、5(Sol) 、6(La) 、7(Si)”是音乐当中的唱名,就对应了音调中的C、D、E、F、G、A、B这些音名。 |1(Do)|2(Re)|3(Mi)|4(Fa)|5(Sol)|6(La)|7(Si)| |-|-|-|-|-|-|-| |C|D|E|F|G|A|B| 频率(音调)高低判断时先看后面的数字,数字越大,音调越高,数字相同时看前面的字母,从C到B频率(音调)越来越高;而节拍是音符延时时间,数值越大,延时时间越长。 节拍是指每个音符持续的时间。音谱中不带线的一个音符就是一拍,延时1000毫秒,而带一条下划线的音符节拍是不带线音符节拍的1/2,带两条下划线的音符节拍是不带线音符节拍的1/4( ![](media/9280991ebf66dac53c3d692cb6acf2cf.png) ) 在本实验中,keyes Micro:bit mini smart robot car 扩展板上自带无源蜂鸣器元件,它是由micro bit主板的P0接口控制。实验中我们用软件自带的库文件,让无源蜂鸣器演奏”欢乐颂“歌曲,下面是《欢乐颂》歌曲的简谱。 ![](media/d13104daf34c36b9f4a98221ab736b00.jpg) 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,请单击“导入”。 如果要一一拖动代码块,请单击“新建项目”。 3. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|..1.Makecode教程\micro:bit测试程序\8.13:无源蜂鸣器播放音乐|无源蜂鸣器播放音乐.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“led 启用 fasle”放入“当开机时”指令方块中。 ![](media/a3ca8c0fc07e063f9e7bec3df246f2fc.png) 2. 点击“音乐”模块,找到并拖出指令方块“播放音调 中C持续 1 节拍 节拍”放入“无限循环”指令方块中,根据上面的“欢乐颂”歌谱,点击指令方块 “播放音调 中C持续 1 节拍 节拍”的“中 C”处,会出现 ![](media/9007cad32767ebef4bea090871d50926.png) 图案,选择“高 E” ![](media/756deddf009a30c923571f5b369883eb.png) 并点击,接着点击“1 节拍”选择“1”。 ![](media/67a8a21795bf59085a7ccb19a189a793.png) 3. 根据上面的“欢乐颂”歌谱可知,复制“无限循环”指令方块中的“播放音调 高E 持续 1 节拍 节拍”指令方块124次,点击指令方块“播放音调 高E 持续 1 节拍 节拍”的“高 E”处和1 节处分别对应的改成: |序号|音调|节拍|序号|音调|节拍|序号|音调|节拍|序号|音调|节拍| |-|-|-|-|-|-|-|-|-|-|-|-| |①|高 E|1|②|高 F|1|③|高 G|1|④|高 G|1| |⑤|高 F|1|⑥|高 E|1|⑦|高 D|1|⑧|高 C|1| |⑨|高 C|1|⑩|高 D|1|⑪|高 E|1|⑫|高 E|1| |⑬|高 D|1/2|⑭|高 D|1|⑮|高 E|1|⑯|高 E|1| |⑰|高 F|1|⑱|高 G|1|⑲|高 G|1|⑳|高 F|1| |㉑|高 E|1|㉒|高 D|1|㉓|高 C|1|㉔|高 C|1| |㉕|高 D|1|㉖|高 E|1|㉗|高 D|1|㉘|高 C|1/2| |㉙|高 C|1|㉚|高 D|1|㉛|高 D|1|㉜|高 E|1| |㉝|高 C|1|㉞|高 D|1|㉟|高 E|1/2|㊱|高 F|1/2| |㊲|高 E|1|㊳|高 C|1|㊴|高 D|1|㊵|高 E|1/2| |㊶|高 F|1/2|㊷|高 E|1|㊸|高 D|1|㊹|高 C|1| |㊺|高 D|1|㊻|中 G|1|㊼|高 E|1|㊽|高 E|1| |㊾|高 E|1|㊿|高 F|1|51|高 G|1|52|高 G|1| |53|高 F|1|54|高 E|1|55|高 D|1|56|高 C|1| |57|高 C|1|58|高 D|1|59|高 E|1|60|高 D|1| |61|高 C|1/2|62|高 C|1|63|高 D|1|64|高 D|1| |65|高 E|1|66|高 C|1|67|高 D|1|68|高 E|1/2| |69|高 F|1/2|70|高 E|1|71|高 C|1|72|高 D|1| |73|高 E|1/2|74|高 F|1/2|75|高 E|1|76|高 D|1| |77|高 C|1|78|高 D|1|79|中 G|1|80|高 E|1| |81|高 E|1|82|高 E|1|83|高 F|1|84|高 G|1| |85|高 G|1|86|高 F|1|87|高 E|1|88|高 C|1| |89|高 C|1|90|高 C|1|91|高 D|1|92|高 E|1| |93|高 D|1|94|高 C|1/2|95|高 C|1|96|高 D|1| |97|高 C|1/2|98|高 C|1|99|高 G|1|100|高 F|1| |101|高 E|1/2|102|高 E|1|103|高 C|1|104|高 B|1| |105|高 A|1/2|106|高 A|1|107|高 F|1/2|108|高 D|1/2| |109|高 C|1/2|110|中 B|1/2|111|高 D|1/2|112|中 B|1/2| |113|中 A|1/2|114|中 G|1/2|115|中 A|1/2|116|中 B|1/2| |117|高 C|1/2|118|高 E|1/2|119|高 D|1/2|120|中 B|1/2| |121|高 C|1|122|高 C|1/2|123|高 C|1/4|124|高 C|1| 完整的代码程序: ![](media/e70f20860d2f039263d210d9a946fb83.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②关闭LED点阵屏。 ....................③在“无限循环”指令方块之内,程序循环运行 ....................④播放音调高E持续1节拍 ....................⑤播放音调高E持续1节拍 ....................⑥播放音调高F持续1节拍 ....................⑦播放音调高G持续1节拍 ....................⑧播放音调高G持续1节拍 ....................⑨播放音调高F持续1节拍 ....................⑩播放音调高E持续1节拍 ....................⑪播放音调高D持续1节拍 ....................⑫播放音调高D持续1节拍 ....................⑬播放音调高C持续1节拍 ....................⑭播放音调高D持续1节拍 ....................⑮播放音调高E持续1节拍 ....................⑯播放音调高E持续1节拍 ....................⑰播放音调高D持续1/2节拍 ....................⑱播放音调高D持续1节拍 ....................⑲播放音调高E持续1节拍 ![](media/f4705d0ecbc96e954685389f3ad97327.png) ....................⑳播放音调高E持续1节拍 ....................㉑播放音调高F持续1节拍 ....................㉒播放音调高G持续1节拍 ....................㉓播放音调高G持续1节拍 ....................㉔播放音调高F持续1节拍 ....................㉕播放音调高E持续1节拍 ....................㉖播放音调高F持续1节拍 ....................㉗播放音调高C持续1节拍 ....................㉘播放音调高C持续1节拍 ....................㉙播放音调高D持续1节拍 ....................㉚播放音调高E持续1节拍 ....................㉛播放音调高D持续1节拍 ....................㉜播放音调高C持续1/2节拍 ....................㉝播放音调高C持续1节拍 ....................㉞播放音调高D持续1节拍 ....................㉟播放音调高D持续1节拍 ....................㊱播放音调高E持续1节拍 ....................㊲播放音调高C持续1节拍 ....................㊳播放音调高D持续1节拍 ....................㊴播放音调高E持续1/2节拍 ![](media/1970bb205dac957dd977cc9b5cf9adb9.png) ....................㊵播放音调高F持续1/2节拍 ....................㊶播放音调高E持续1节拍 ....................㊷播放音调高C持续1节拍 ....................㊸播放音调高D持续1节拍 ....................㊹播放音调高E持续1/2节拍 ....................㊺播放音调高F持续1/2节拍 ....................㊻播放音调高E持续1节拍 ....................㊼播放音调高D持续1节拍 ....................㊽播放音调高C持续1节拍 ....................㊾播放音调高C持续1节拍 ....................㊿播放音调中G持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高F持续1节拍 ....................播放音调高G持续1节拍 ....................播放音调高G持续1节拍 ....................播放音调高F持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高D持续1节拍 ![](media/ceafcbd1a511f0bf281b112bfe0941e4.png) ....................播放音调高C持续1节拍 ....................播放音调高C持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高C持续1/2节拍 ....................播放音调高C持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高C持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高E持续1/2节拍 ....................播放音调高F持续1/2节拍 ....................播放音调高E持续1节拍 ....................播放音调高C持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高F持续1/2节拍 ....................播放音调高E持续1节拍 ![](media/df7bea5ab76b1fcc70682b0410f29cca.png) ....................播放音调高D持续1节拍 ....................播放音调高C持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调中G持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高F持续1节拍 ....................播放音调高G持续1节拍 ....................播放音调高G持续1节拍 ....................播放音调高F持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高C持续1节拍 ....................播放音调高C持续1节拍 ....................播放音调高C持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高E持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高C持续1/2节拍 ....................播放音调高C持续1节拍 ![](media/ba4533d89b9219dcc6663c9cc22710f8.png)....................播放音调高D持续1节拍 ....................播放音调高D持续1节拍 ....................播放音调高C持续1/2节拍 ....................播放音调高C持续1节拍 ....................播放音调高G持续1节拍 ....................播放音调高F持续1节拍 ....................播放音调高E持续1/2节拍 ....................播放音调高E持续1节拍 ....................播放音调高C持续1节拍 ....................播放音调高B持续1节拍 ....................播放音调高A持续1/2节拍 ....................播放音调高A持续1节拍 ....................播放音调高F持续1/2节拍 ....................播放音调高D持续1/2节拍 ....................播放音调高C持续1/2节拍 ....................播放音调中B持续1/2节拍 ....................播放音调高D持续1/2节拍 ....................播放音调中B持续1/2节拍 ....................播放音调中A持续1/2节拍 ....................播放音调中G持续1/2节拍 ....................播放音调中A持续1/2节拍 ![](media/73950a4663f56b481d35802d137dd86c.png) ....................播放音调中B持续1/2节拍 ....................播放音调高C持续1/2节拍 ....................播放音调高E持续1/2节拍 ....................播放音调高D持续1/2节拍 ....................播放音调中B持续1/2节拍 ....................播放音调高C持续1节拍 ....................播放音调高C持续1/2节拍 ....................播放音调高C持续1/4节拍 ....................播放音调高C持续1节拍 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/13a99d5f6bdae837783edc06c59375a3.png) ![](media/cc1aa8edafe1e32897fac847385d2d39.png) ![](media/9c20144ddf8d1b3c788768b480dbb07f.png) 4 .实验结果: 按照以前的方式将代码下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车扩展板上的无源蜂鸣器一直循环播放《欢乐颂》歌曲。 ### 14:RGB灯实验 ![](media/eb371068cdb58006e9e422beb919bc1c.png) 1. 实验说明: ![](media/ad8930da839191890e4f24bf4bb34c66.png)RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。 显示器大都是采用了RGB颜色标准,在显示器上,是通过电子枪打在屏幕的红、绿、蓝三色发光极上来产生色彩的,电脑一般都能显示32位颜色,有一千万种以上的颜色。电脑屏幕上的所有颜色,都由这红色绿色蓝色三种色光按照不同的比例混合而成的。一组红色绿色蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达,因此这红色绿色蓝色又称为三原色光,用英文表示就是R(红)、G(green)、B(blue)。 RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于三者亮度之总和,越混合亮度越高,即加法混合。红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮,因此被通常被人们称为七彩LED。 红、绿、蓝三个颜色通道每种色各分为256阶亮度,用数字表示为从0、1、2...直到255。注意虽然数字最高是255,相当于100%,但0也是数值之一,因此共256级。在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为255时,是最亮的白色调。 |颜色样式|RGB数值(R,G,B)|颜色代码|颜色样式|RGB数值(R,G,B)|颜色代码| |-|-|-|-|-|-| |黑色|0,0,0|#000000|红色|255,0,0|#FF0000| |绿色|0,255,0|#00FF00|蓝色|0,0,255|#0000FF| |青色|0,255,255|#00FFFF|深红色|255,0,255|#FF00FF| |黄色|255,255,0|#FFFF00|白色|255,255,255|#FFFFFF| |......|.......|......|......|......|......| 调整相关数字,便可以得到深浅不一的各种颜色| RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。加成色用于照明光、电视和计算机显示器。例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。这些颜色若发生重叠,则产生青、洋红和黄。RGB灯分为共阳、共阴两种,在这个小车的扩展板上,焊接有2个RGB灯,我们可以利用这2个GRB灯做为小车的指示灯。为了节约IO口资源,我们利用1个PCA9685PW芯片驱动2个RGB灯。 这一课程中我们做2个实验,一个是2个RGB灯循环亮起2个RGB灯循环亮起红、绿、蓝、青、深红、黄、白7种颜色灯光,另一个是2个RGB灯渐变显示不同颜色灯光。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 3. 实验代码: 代码1 RGB灯循环亮起7种颜色光 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.14:RGB灯实验\GRB-1|RGB-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“K-Bit”模块,找到并拖出“LED brightness 0”指令方块放入“当开机时”指令方块中,数字0可以改成0至255中任意一个数字,设置数字越大,RGB就越亮,在这里就把数字0改成70。 ![](media/30983ae7a55cd61757babbbc2574a0dd.png) (2)又点击“K-Bit”模块,找到并拖出“set RGB led R:0 G:0 B:0”指令方块放入“无限循环”指令方块中,把R后面的数字0改成255,其他的不变。 ![](media/8c63f2ecf469d91f8bb03172e6eb9118.png) (3)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中,设置延时1000毫秒。 ![](media/c83080df544e9dbabe23d7cf67827db8.png) 4. 复制代码串 ![](media/c83080df544e9dbabe23d7cf67827db8.png) 6次并且也放入“无限循环”指令方块中,将“ R:255 G:0 B:0”对应的改成 “R:0 G:255 B:0”、“ R:0 G:0 B:255”、“ R:0 G:255 B:255”、“ R:255 G:0 B:255”、“ R:255 G:255 B:0”、“ R:255 G:0 B:255”。 ![](media/047436c5cc639d138475d33c28bacc0a.png) 完整的代码程序: ![](media/94492ef219ad43f27d0b3e86850a6083.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②设置小车2个RGB灯的亮度为70。 ....................③在“无限循环”指令方块之内,程序循环运行。 ....................④设置RGB灯R:255 G:0 B:0,控制小车2个RGB灯亮红色灯 ....................⑤延时时间1000毫秒 ....................⑥设置RGB灯R:0 G:255 B:0,控制小车2个RGB灯亮绿色灯 ....................⑦延时时间1000毫秒 ....................⑧设置RGB灯R:0 G:0 B:255,控制小车2个RGB灯亮蓝色灯 ....................⑨延时时间1000毫秒 ....................⑩设置RGB灯R:0 G:255 B:255,控制小车2个RGB灯亮青色灯 ....................⑪延时时间1000毫秒 ....................⑫设置RGB灯R:255 G:0 B:255,控制小车2个RGB灯亮深红色灯 ....................⑬延时时间1000毫秒 ....................⑭设置RGB灯R:255 G:255 B:0,控制小车2个RGB灯亮黄色灯 ....................⑮延时时间1000毫秒 ....................⑯设置RGB灯R:255 G:255 B:255,控制小车2个RGB灯亮白色灯 ....................⑰延时时间1000毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/f4e25b0cd85bccccb51dcd633a54ce5a.png) 代码2: RGB灯渐变显示不同颜色灯光 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.14:RGB灯实验\GRB-2|RGB.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“K-Bit”模块,找到并拖出“LED brightness 0”指令方块放入“当开机时”指令方块中,数字0可以改成0至255中任意一个数字,设置数字越大,RGB就越亮,在这里就把数字0改成200。 ![](media/e5d1162f2eae648f2acb62bde662b5b1.png) (2)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中分别输入“led-r”,点击“OK”,建立了变量“led-r”。用同样的方法先后分别建立变量“led-g”和“led-b”,拖出指令方块“将 led-b 设为 0”放入“当开机时”指令方块中,复制指令方块“将 led-b 设为 0”2次并放入“当开机时”指令方块中,点击第1个led_b后面的下拉三角形按钮选择led_r,再点击第2个led_b后面的下拉三角形按钮选择led_g。 ![](media/db1212782546bafb5cee4f5f92fa8587.png) 10. 点击“循环”模块,先找到并拖出指令方块“重复 4 次 执行”放入“无限循环”指令方块中。 ![](media/4dd5249e1bec767d98a2267f826a25e2.png) 11. 先点击“K-Bit”模块,找到并拖出“set RGBled R:0 G:0 B:0”指令方块放入“重复 4 次 执行”指令方块中,再点击“变量”模块,找到并拖出变量指令方块“led-r”放入R后面的数字0处,其他的不变。 ![](media/24e2034c521ad8e03c00ba42a9ccd555.png) (5)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“重复 4 次 执行”指令方块中,设置延时100毫秒。 ![](media/7b9b054cd499bb3b3d6f87cda5b8d550.png) (6)点击“变量”模块,找到并拖出变量指令方块“以 1 为幅度更改 led-b”放入“重复 4 次 执行”指令方块中,点击led-b后面的下拉三角形按钮选择led-r。要使RGB红色灯逐渐变亮,R值的范围为0-255,这里设置变量“led-r”每次增加5,则需要增加51次,就将by后面的数字1改成5,把重复 后面的数字4改成51。 ![](media/4acdfc3fcff6e7e67619d01fd14e3f24.png) (7)复制代码串 ![](media/4acdfc3fcff6e7e67619d01fd14e3f24.png) 1次并放入“无限循环”指令方块中,要使RGB红色灯逐渐变暗,这里设置变量“led-r”每次减少5,则需要减少51次,就将by后面的数字5改成-5。 ![](media/f15efea5068a40a1f42f7df9033b92e3.png) 6. 复制代码串 ![](media/f15efea5068a40a1f42f7df9033b92e3.png) 1次并放入“无限循环”指令方块中,将R后面的变量指令方块“led-r”移到G后面的数字0处,点击led-r后面的下拉三角形按钮选择led-g,4个led-r都要改成led-g。其他的保持不变。 ![](media/6c47b3cb71ea59eb8217ec461baf3afc.png) 7. 再次复制代码串 ![](media/6c47b3cb71ea59eb8217ec461baf3afc.png) 1次并放入“无限循环”指令方块中,将R后面的变量指令方块“led-r”移到B后面的数字0处,点击led-r后面的下拉三角形按钮选择led-b,4个led-r都要改成led-b。其他的保持不变。 ![](media/39cd09f1f9aa5375d7b55fd893b2c119.png) 完整的代码程序: ![](media/0df06d6aa32017af7d7652d6694f1847.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②设置小车2个RGB灯的亮度为200。 ....................③将led-r设为0 ....................④将led-g设为0 ....................⑤将led-b设为0 ....................⑥在“无限循环”指令方块之内,程序循环运行。 ....................⑦do中的程序重复51次。 ....................⑧设置RGB灯的R:led-r G:0 B:0 ....................⑨延时时间100毫秒 ....................⑩以5为幅度更改led-r ....................⑪do中的程序重复51次。 ....................⑫设置RGB灯的R:led-r G:0 B:0 ....................⑬延时时间100毫秒 ....................⑭以-5为幅度更改led-r ....................⑮do中的程序重复51次。 ....................⑯设置RGB灯的R:0 G:led-g B:0 ....................⑰延时时间100毫秒 ....................⑱以5为幅度更改led-g ....................⑲do中的程序重复51次。 ....................⑳设置RGB灯的R:0 G:led-g B:0 ....................㉑延时时间100毫秒 ....................㉒以-5为幅度更改led-g ....................㉓do中的程序重复51次。 ....................㉔设置RGB灯的R:0 G:0 B:led-b ....................㉕延时时间100毫秒 ....................㉖以5为幅度更改led-b ....................㉗do中的程序重复51次。 ....................㉘设置RGB灯的R:0 G:0 B:led-b ....................㉙延时时间100毫秒 ....................㉚以-5为幅度更改led-b ![](media/6e60cc0f9a3cf6566209b7a369ddd8d7.png) 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/bf07383646cc04a026347929436cfc83.png) 4.实验结果: 按照之前的方式将代码1下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车上2个RGB灯循环亮起红、绿、蓝、青、深红、黄、白7种颜色灯光,循环进行。 按照之前的方式将代码2下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车上2个RGB灯渐变显示不同颜色灯光,循环进行。 ### 15:KEYES-2812-18R模块RGB灯亮起 ![](media/75a3a53f6230d6adc83af7caca154c03.png) 1.实验说明: KEYES-2812-18R模块自带18个WS2812 RGB灯,完全兼容micro bit控制板。在这一课程中我们利用micro bit主板的P5控制端(对应于小车扩展板的D5),控制模块上18个WS2812 RGB灯显示不同的状态。课程中,我们提供4个实验代码,让模块上18个WS2812 RGB灯分别显示4种不同的实验现象。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 3. 实验代码: 代码1: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.15:KEYES-2812-18R模块RGB灯亮起\Code-1|microbit-Code-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/01d583d212212c83842f834cfbfc5e24.png) (2)点击“Neopixel”模块,找到并拖出指令方块“strip clear”放入指令方块“当开机时”中。 ![](media/b48e8906873da890ac40435b229da364.png) (3)点击“Neopixel”模块,找到并拖出指令方块“strip 显示颜色 红”放入指令方块“无限循环”中。 ![](media/61aaf528f65e09b7e941dd8f6b6991e6.png) (4)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中,设置延时1000毫秒。 ![](media/30e5e76bf2241a8af80995cfd2fae141.png) (5)复制代码串 ![](media/30e5e76bf2241a8af80995cfd2fae141.png) 8次并放入“无限循环”指令方块中,点击红后面的下拉三角形按钮分别对应的选择橙、黄、绿、蓝、靛蓝、紫罗兰、紫、白,其他的不变。 ![](media/40b65ee2d1dd0c58f85800fd6f8ebca5.png) 完整的代码程序: ![](media/efd7bb76a047ed3a71338c89b56e5412.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................③关闭KEYES-2812-18R模块上所有的RGB灯。 ....................④在“无限循环”指令方块之内,程序循环运行。 ....................⑤所有的RGB灯亮红色灯 ....................⑥延时时间1000毫秒 ....................⑦所有的RGB灯亮橙色灯 ....................⑧延时时间1000毫秒 ....................⑨所有的RGB灯亮黄色灯 ....................⑩延时时间1000毫秒 ....................⑪所有的RGB灯亮绿色灯 ....................⑫延时时间1000毫秒 ....................⑬所有的RGB灯亮蓝色灯 ....................⑭延时时间1000毫秒 ....................⑮所有的RGB灯亮靛蓝色灯 ....................⑯延时时间1000毫秒 ....................⑰所有的RGB灯亮紫罗兰色灯 ....................⑱延时时间1000毫秒 ....................⑲所有的RGB灯亮紫色灯 ....................⑳延时时间1000毫秒 ....................㉑所有的RGB灯亮白色灯 ....................㉒延时时间1000毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/92dbf7b9ad0ca0858813a345db6da3fa.png) 代码2: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.15:KEYES-2812-18R模块RGB灯亮起\Code-2|microbit-Code-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/01d583d212212c83842f834cfbfc5e24.png) (2)又点击“Neopixel”模块,找到并拖出指令方块“ strip 显示彩虹特效(色相)从 1 到 360 ”放入指令方块“当开机时”中。 ![](media/301635ca63f43d832855be168744402c.png) (3)再点击“Neopixel”模块,找到并拖出指令方块“ strip 移动像素 偏移量1”放入指令方块“无限循环”中。 ![](media/c9c2771df579c8eac6cb1a8e4d40a24a.png) (4)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中,设置延时100毫秒。 ![](media/933cc92a76bdb18d5719bbd0c648cb22.png) (5)再一次点击“Neopixel”模块,找到并拖出指令方块“ strip 刷新显示”放入指令方块“无限循环”中。 ![](media/9a78fa321b4ecbe320e12b1410b257d0.png) 完整的代码程序: ![](media/94101eddf305d93f53f748bc8a317768.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................③strip显示彩虹特效(色相)从1到360。 ....................④在“无限循环”指令方块之内,程序循环运行。 ....................⑤strip移动像素 偏移量为1 ....................⑥延时时间100毫秒 ....................⑦strip刷新显示 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/dd45c78c5ebd3d63154884f90dcb217d.png) 代码3: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.15:KEYES-2812-18R模块RGB灯亮起\Code-3|microbit-Code-3.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/01d583d212212c83842f834cfbfc5e24.png) (2)点击“循环”模块,找到并拖出指令方块“对于从 0 至 4...执行”放入指令方块“无限循环”中,并将数字4改成17。 ![](media/c2802f8cf9a41117a0ce36badcde17c2.png) (3)点击“Neopixel”模块,找到并拖出指令方块“strip 清除显示”放入指令方块“对于从 0 至 17...执行”中。 ![](media/46ac5dcc2876a611805f6f4933e5c6d1.png) (4)先点击“Neopixel”模块,接着点击“Neopixel”模块下的“更多”,找到并拖出指令方块“strip 设置颜色 像素 0 为 红”放入指令方块“对于从 0 至 17...执行”中,再点击“变量”模块,找到并拖出变量指令方块“index”放入指令方块“strip 设置颜色 像素 0 为 红”中的数字0处。 ![](media/629f32a18b5fed9a8762615c7421aa21.png) (5)点击“Neopixel”模块,找到并拖出指令方块“ strip 刷新显示”放入指令方块“f对于从 0 至 17...执行”中。 ![](media/ad4308062bb60abf4c107187084ec4b4.png) (6)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“f对于从 0 至 17...执行”指令方块中,设置延时100毫秒。 ![](media/7f8c5d8cd705c4fb1395ad59241de2f8.png) (7)复制代码串 ![](media/7f8c5d8cd705c4fb1395ad59241de2f8.png) 8次并都放入指令方块“无限循环”中,点击红后面的下拉三角形按钮分别对应的选择橙色、橙、黄、绿、蓝、靛蓝、紫罗兰、紫、白其他的不变。 完整的代码程序: ![](media/a27e094ab0f67fa549013d11cfba4abc.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................③在“无限循环”指令方块之内,程序循环运行。 ....................④对于从0至17的index,执行do中的程序 ....................⑤关闭条带上所有的RGB灯。 ....................⑥将条带上18个RGB灯设置像素index亮红色灯 ....................⑦strip刷新显示 ....................⑧延时时间100毫秒 ....................⑨对于从0至17的index,执行do中的程序 ....................⑩关闭条带上所有的RGB灯。 ....................⑪将条带上18个RGB灯设置像素index亮橙色灯 ....................⑫strip刷新显示 ....................⑬延时时间100毫秒 ....................⑭对于从0至17的index,执行do中的程序 ....................⑮关闭条带上所有的RGB灯。 ....................⑯将条带上18个RGB灯设置像素index亮黄色灯 ....................⑰strip刷新显示 ....................⑱延时时间100毫秒 ![](media/44f8af59fd08500c308571d7787c74b8.png) ....................⑲对于从0至17的index,执行do中的程序 ....................⑳关闭条带上所有的RGB灯。 ....................㉑将条带上18个RGB灯设置像素index亮绿色灯 ....................㉒strip刷新显示 ....................㉓延时时间100毫秒 ....................㉔对于从0至17的index,执行do中的程序 ....................㉕关闭条带上所有的RGB灯。 ....................㉖将条带上18个RGB灯设置像素index亮蓝色灯 ....................㉗strip刷新显示 ....................㉘延时时间100毫秒 ....................㉙对于从0至17的index,执行do中的程序 ....................㉚关闭条带上所有的RGB灯。 ....................㉛将条带上18个RGB灯设置像素index亮靛蓝色灯 ....................㉜strip刷新显示 ....................㉝延时时间100毫秒 ....................㉞变量index的值处于0-17之间,执行do中的程序 ....................㉟关闭条带上所有的RGB灯。 ....................㊱将条带上18个RGB灯设置亮紫罗兰色灯 ....................㊲条带显示所有的变化 ....................㊳延时时间100毫秒 ....................㊴变量index的值处于0-17之间,执行do中的程序 ....................㊵关闭条带上所有的RGB灯。 ....................㊶将条带上18个RGB灯设置亮紫色灯 ....................㊷条带显示所有的变化 ....................㊸延时时间100毫秒 ....................㊹变量index的值处于0-17之间,执行do中的程序 ....................㊺关闭条带上所有的RGB灯。 ....................㊻将条带上18个RGB灯设置亮白色灯 ....................㊼条带显示所有的变化 ....................㊽延时时间100毫秒 ![](media/6f34861b6963ebc70c1c497fa15f0b09.png) ....................㉞对于从0至17的index,执行do中的程序 ....................㉟关闭条带上所有的RGB灯。 ....................㊱将条带上18个RGB灯设置像素index亮紫罗兰色灯 ....................㊲strip刷新显示 ....................㊳延时时间100毫秒 ....................㊴对于从0至17的index,执行do中的程序 ....................㊵关闭条带上所有的RGB灯。 ....................㊶将条带上18个RGB灯设置像素index亮紫色灯 ....................㊷strip刷新显示 ....................㊸延时时间100毫秒 ....................㊹对于从0至17的index,执行do中的程序 ....................㊺关闭条带上所有的RGB灯。 ....................㊻将条带上18个RGB灯设置像素index亮白色灯 ....................㊼strip刷新显示 ....................㊽延时时间100毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/40a3f9e9dee8255956bc4b1f2777579c.png) ![](media/64919ea58e998bff7fbfdb4473bd619d.png) 代码4: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.15:KEYES-2812-18R模块RGB灯亮起\Code-4|microbit-Code-4.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/01d583d212212c83842f834cfbfc5e24.png) (2)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入R,点击“OK”,建立了变量“R”。用同样的方法分别建立变量“G”和“B”,拖出指令方块“set B to 0”放入“当开机时”指令方块中,复制指令方块“set B to 0”2次并放入“当开机时”指令方块中,点击第1个B后面的下拉三角形按钮选择R,再点击第2个B后面的下拉三角形按钮选择G。 ![](media/c93696395dce15a7a785b7c94dc9cd99.png) (3)点击“循环”模块,找到并拖出指令方块“对于从 0至4 的 index 执行”放入指令方块“无限循环”中,并将数字4改成17。 ![](media/fb0f55c689fa6c622144a8fd83845587.png) (4)先点击“变量”模块,找到并拖出指令方块“将 B 设为 0”放入“对于从 0至4 的 index 执行”指令方块中,点击B后面的下拉三角形按钮选择R。再点击“数学”模块,找到并拖出方块“选取随机数,范围为0至10”放入指令方块“将 R 设为 0”中的数字0处,将数字0改成10,数字10改成255。 ![](media/82349f9643280908d1006a8370f4399b.png) (5)复制代码块 ![](media/82349f9643280908d1006a8370f4399b.png) 2次并放入“对于从 0至4 的 index 执行”指令方块中,点击R后面的下拉三角形按钮分别选择G和B,其他的不变。 ![](media/d8dd5b5cbe2577a36b3ffd57a12ef95e.png) (6)点击“Neopixel”模块,找到并拖出指令方块“strip 清除显示”放入指令方块“f对于从 0 至 17...执行”中。 ![](media/c0bdb19e83f290649da2292136364770.png) (7)先点击“Neopixel”模块,接着点击“Neopixel”模块下的“更多”,找到并拖出指令方块“strip 设置颜色 像素 0 为 红”放入指令方块“f对于从 0 至 17...执行”中,接着又从“Neopixel”模块下的“更多”中找到并拖出指令方块“红 255 绿 255 蓝 255”放入红处,再点击“变量”模块,找到并拖出变量指令方块“index”放入指令方块“strip 设置颜色 像素 0 为 红”中的数字0处,接着又分别拖出变量指令方块“R”放入红后面的数字255处,变量指令方块“G”放入绿后面的数字255处,变量指令方块“B”放入 蓝 后面的数字255处。 ![](media/ebb6952dd6953dbc3200f06643cfd8cb.png) (8)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“f对于从 0 至 17...执行”指令方块中,设置延时500毫秒。 ![](media/31daf6b43c619df502d206deb3f8625d.png) (9)点击“Neopixel”模块,找到并拖出指令方块“ strip 刷新显示”放入指令方块“f对于从 0 至 17...执行”中。 ![](media/c2b174db1188550b1152ce56b73c3502.png) 完整的代码程序: ![](media/86453c504f413719eebe0fc78b8e419a.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................③将变量R设为0 ....................④将变量R设为0 ....................⑤将变量R设为0 ....................⑥在“无限循环”指令方块之内,程序循环运行。 ....................⑦变量index的值处于0-17之间,执行do中的程序 ....................⑧将变量R设为10至255中的随机数 ....................⑨将变量G设为10至255中的随机数 ....................⑩将变量B设为10至255中的随机数 ....................⑪关闭条带上所有的RGB灯。 ....................⑫条带上设置颜色像素index为RGB(红R绿G蓝B) ....................⑬延时时间500毫秒 ....................⑭strip刷新显示 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/dd76b0ea8902043a3b412cef3e2e45a3.png) 4.实验结果: 按照以前的方式将代码1下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车上KEYES-2812-18R模块18个WS2812RGB灯全亮,一种颜色变化,一直循环。 用同样的方法将代码2下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车上KEYES-2812-18R模块18个WS2812RGB灯全亮彩色,然后一个一个熄灭,熄灭完就停止; 用同样的方法将代码3下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车上KEYES-2812-18R模块1个WS2812RGB灯亮转圈,一圈一种颜色,一直循环; 用同样的方法将代码4下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车上KEYES-2812-18R模块1个WS2812RGB灯亮转圈,每个灯亮起都是一种随机颜色,一直循环。 ### 16:光敏传感器测试 ![](media/d886f14ac931f651ba7977c396fcb785.png) 1. 实验说明: 在生活中我们发现,很多公共场所的照明灯,一到晚上它就自动亮起来,一到白天它就自动熄灭, 难道这些灯都是有人去控制吗?实际上不是,实际上很多照明灯都是安装了一个感光元件,可以测量外界光的亮度,当到晚上时,亮度低了,就自动控制路灯亮起;当到白天时,亮度高了,就自动控制路灯熄灭。 这个感光元件实际上就是光敏电阻器,是利用半导体的光电效应制成的一种电阻值随光照的强弱而改变的电阻器,光敏电阻对环境光线是非常敏感的,在不同的光照强度下,光敏电阻的阻值是不一样的。我们利用光敏电阻器该特性,设计电路,可以生成光敏电阻传感器模块。光敏电阻器单片机的模拟口,当光照强度增强时,电阻减小,模拟口电压增大,即单片机的模拟值也变大;反之,光照强度减弱时,电阻增大,模拟口电压减小,即单片机的模拟值变小。这样,我们就可以利用光敏电阻器读取对应模拟值,感应环境中光照强度了。 光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。光敏电阻器可广泛应用于各种光控电路,如对灯光的控制、调节等场合,也可用于光控开关。 keyes micro:bit mini smart robot car 扩展板上自带有光敏电阻器。实验中,我们通过利用光敏电阻器感应周围环境光亮度,用来控制KEYES-2812-18R模块上18个RGB灯的颜色亮度。设置当环境中光线越暗,18个RGB灯越亮。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 3. 实验代码: 代码1: 光敏电阻检测外界光线强度 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.16:光敏传感器测试\microbit-光敏电阻器测试-1|microbit-光敏电阻器测试-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到 USB”放入“当开机时”指令方块中。 ![](media/632bdaf21215da416233f7a8275fe4f3.png) (3)点击“高级”下的“串行”模块,找到并拖出指令方块 串行写入数值 “x”=0”放入“无限循环”指令方块中。 ![](media/4780d1c5233050c65580372c77742fb0.png) (4)点击“K_Bit”模块,找到并拖出指令方块“photoresistor”放入“=”右侧的数字0处,将“=”左侧的“x”改成“analog signal”。 ![](media/f1f3fb1358ffd5522528d05f77cccbdd.png) (5)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入指令方块“无限循环”中,设置延时时间为100毫秒。 ![](media/6aa52ae95a1462bc10d22be000e91f0f.png) 完整的代码程序: ![](media/d3091faff59d526ea10985cf0f51dac0.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②串行重定向USB。 ....................③在“无限循环”指令方块之内,程序循环运行 ....................④串行写入analog signal=光敏电阻器读取的模拟信号 ....................⑤延时时间100毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/930e526ae841aa9032317b22fed3c878.png) 按照之前的方式将代码1下载到microbit,micro USB数据线不要拔下来,利用micro USB数据线上电,接下来点击显示数据(设备)按钮: ![](media/4e5fa874a2e50f1c7730c1aabc47ede6.png) 将显示光线强度数据,如下图所示: ![](media/4c2234f71174b24389d3d667d2787447.png) 显示数据(设备)中显示了小车上光敏电阻器检测外界光线强度对应的模拟信号,随着外界光线强度逐渐减弱,模拟数值在逐渐变小;反之,模拟数值在逐渐增大。如上图。 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。CoolTerm的口监视器显示对应数值,随着外界光照强度逐渐减弱,模拟数值在逐渐变小;反之,模拟数值在逐渐增大。如下图: ![](media/8c171307244fb86b2184ea235be3802e.png) 代码2: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.16:光敏传感器测试\microbit-光敏电阻器测试-2|microbit-光敏电阻器测试-2.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入val,点击“OK”,建立了变量“val”。拖出指令方块“将 val 设为 0”放入“当开机时”指令方块中。 ![](media/4fef079b1c0ba5e4f5a7980c7af8ba5e.png) (2)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/703f421edb268b54525429ebf3d9ee9d.png) (3)又点击“Neopixel”模块,找到并拖出指令方块“strip 清除显示”放入指令方块“当开机时”中。 ![](media/8a10e855a980805301a730655a1584f9.png) (4)先点击“变量”模块,找到并拖出指令方块“将 strip 设为 0”放入“无限循环”指令方块中,点击strip后面的下拉三角形按钮选择val。接着点击“数学”模块,找到并拖出“映射 0 从低 0 从高1023 至低0 至高 4”方块放入to后面的数字0处;再点击“K_Bit”模块,找到并拖出指令方块“photoresistor”放入map 后面的第一个数字0处,将高后面的数字4改成255,其他的不变。 ![](media/2030a950d8dac5afa1b9e4a7d1a757c6.png) (5)点击“Neopixel”模块,先找到并拖出指令方块“strip 显示颜色 红”放入指令方块“无限循环”中,再点击“Neopixel”模块下的“更多”,找到并拖出指令方块“红 255 绿 255 蓝 255”放入红处。 ![](media/fca1cb08dcd4b42440f528ccebf909b1.png) (6)先点击“数学”模块,找到并拖出“0 - 0”方块放入红后面的数字255处,再点击“变量”模块,找到并拖出变量指令方块“val”放入“-”右侧的数字0处,将“-”左侧的数字0改成255,再复制代码块“255-val”2次并分别放入绿后面的数字255处和蓝后面的数字255处。 ![](media/7ccd574881240e89f904ddde243976b1.png) (7)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入指令方块“无限循环”中,设置延时时间为100毫秒。 ![](media/2b077d334d901cc6992cdf287a230020.png) 完整的代码程序: ![](media/4deb90fb5ff1e6ea2216e932c99137b1.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②将变量val设为0 ....................③将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................④关闭条带上所有的RGB灯。 ....................⑤在“无限循环”指令方块之内,程序循环运行。 ....................⑥将变量val设为映射光敏电阻器读取的模拟信号0-1023到0-255 ....................⑦strip显示颜色RGB(红 255-val 绿 255-val 蓝 255-val) ....................⑧延时时间100毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/0f40023ff774f43a30fdd6b6411dcd08.png) 4.实验结果: 按照之前的方式将代码2下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,KEYES-2812-18R模块上18个RGB灯亮白色灯,外界光线越暗,18个RGB灯亮度越强。 ### 17:电机驱动 ![](media/596de7f13f36eaf067afacc3a842a0da.png) 1. 实验说明: keyes Micro:bit mini smart robot car 扩展板上配有两个直流减速电机,即[齿轮减速电机](https://baike.baidu.com/item/%E9%BD%BF%E8%BD%AE%E5%87%8F%E9%80%9F%E7%94%B5%E6%9C%BA/3249233),是在普通[直流电机](https://baike.baidu.com/item/%E7%9B%B4%E6%B5%81%E7%94%B5%E6%9C%BA/2404223)的基础上,加上配套齿轮减速箱。齿轮减速箱的作用是,提供较低的转速,较大的力矩。同时,[齿轮箱](https://baike.baidu.com/item/%E9%BD%BF%E8%BD%AE%E7%AE%B1/1059341)不同的[减速比](https://baike.baidu.com/item/%E5%87%8F%E9%80%9F%E6%AF%94/5341327)可以提供不同的转速和力矩。这大大提高了,直流电机在自动化行业中的使用率。[减速电机](https://baike.baidu.com/item/%E5%87%8F%E9%80%9F%E7%94%B5%E6%9C%BA/3750851)是指[减速机](https://baike.baidu.com/item/%E5%87%8F%E9%80%9F%E6%9C%BA/873618)和电机(马达)的集成体。这种集成体通常也可称为[齿轮马达](https://baike.baidu.com/item/%E9%BD%BF%E8%BD%AE%E9%A9%AC%E8%BE%BE/7911602)或[齿轮电机](https://baike.baidu.com/item/%E9%BD%BF%E8%BD%AE%E7%94%B5%E6%9C%BA/3377578)。减速电机广泛应用于钢铁行业、机械行业等。使用减速电机的优点是简化设计、节省空间。 keyes Micro:bit mini smart robot car 扩展板上包含PCA9685PW芯片和TB6612FNG芯片等,为了节约IO口资源,我们通过TB6612FNG芯片控制两个直流减速电机的转动方向和速度。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 3. 实验代码: 代码1: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.17:电机驱动\Code-1|microbit-电机驱动-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“led 启用 fasle”放入“当开机时”指令方块中,点击“false”后面的下拉三角形按钮选择“true”。 ![](media/a27c8171ca4ab8543ab1e45070033f1b.png) (2)点击“基础”模块,找到并拖出指令方块“显示箭头 北”放入“无限循环”指令方块中,点击 北 后面的下拉三角形按钮分别选择南。 ![](media/8a73819612abdf969e72787bde2bd3ff.png) (3)点击“K_Bit”模块,找到并拖出指令方块“car RunForward speed : 0 %”放入“无限循环”指令方块中,数字0可以更改成0-100的任意数,这里将数字0改成80。 ![](media/dd63f0dcc23973e73613f812617666cf.png) 3. 点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入指令方块“无限循环”中,设置延时时间为100毫秒。 ![](media/7c8b593bd231baa8b1ba1761d1533819.png) 4. 复制代码串 ![](media/7c8b593bd231baa8b1ba1761d1533819.png) 1次并放入指令方块“无限循环”中,点击South后面的下拉三角形按钮选择North,又点击RunForward后面的下拉三角形按钮对应的选择RunBack,其他的不变。 ![](media/93a709404a966b1fac401d7c1e4b79fd.png) (5)复制代码块“显示箭头 北”1次也放入指令方块“无限循环”中,并点击 北 后面的下拉三角形按钮选择 南 。 ![](media/e5c2b2bc4b5a43588274b83c3b93a68a.png) (6)点击“K_Bit”模块,找到并拖出指令方块“LeftSide motor run Forward speed : 0 %”放入“无限循环”指令方块中,将数字0改成20;再复制代码块“LeftSide motor run Forward speed : 20 %”1次也放入“无限循环”指令方块中,点击LeftSide后面的下拉三角形按钮选择RightSide,并将数字20改成80。再复制指令方块“暂停 (ms) 1000”1次也放入指令方块“无限循环”中。 ![](media/b6708770c0ad5d20fb855b50f9d17f0a.png) ![](media/b6708770c0ad5d20fb855b50f9d17f0a.png) (7)复制代码串1次并放入“无限循环”指令方块中,先点击 东 后面的下拉三角形按钮选 西,再将LeftSide后面的数字20改成80,RightSide后面的数字80改成20,其他的不变。 ![](media/78f27e83cd8aac3fe92cf99cbafb79ef.png) ![](media/78f27e83cd8aac3fe92cf99cbafb79ef.png) (8)复制代码串2次并放入指令方块“无限循环”中,点击 南 后面的下拉三角形按钮分别选择东和西,又点击RunForward后面的下拉三角形按钮分别对应的选择TurnLeft、TurnRight,其他的不变。 ![](media/62647cfa74b45dae1cb2b5f588495523.png) (9)点击“基础”模块,找到并拖出指令方块“显示 LED”放入指令方块“无限循环”中,点击灰蓝色小方框组成倒立的“❤”图案。 ![](media/cae11859785333d6d5e8c1b798e95b4b.png) (10)点击“K_Bit”模块,找到并拖出指令方块“car stop”放入“无限循环”指令方块中,接着复制指令方块“暂停 (ms) 1000”1次也放入指令方块“无限循环”中。 ![](media/95ad485cc9bc3c77c6c1643f4335249f.png) 完整的代码程序: ![](media/6936df6cf2a37cf3348f36bab3de4dc6.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②打开LED点阵屏。 ....................③在“无限循环”指令方块之内,程序循环运行。 ....................④LED点阵显示箭头朝南的图案 ....................⑤小车以80%速度向前走 ....................⑥延时时间1000毫秒 ....................⑦LED点阵显示箭头朝北的图案 ....................⑧小车以80%速度向后走 ....................⑨延时时间1000毫秒 ....................⑩LED点阵显示箭头朝东的图案 ....................⑪小车的左轮以20%速度前进 ....................⑫小车的右轮以80%速度前进 ....................⑬延时时间1000毫秒 ....................⑭LED点阵显示箭头朝西的图案 ....................⑮小车的左轮以80%速度前进 ....................⑯小车的右轮以20%速度前进 ....................⑰延时时间1000毫秒 ....................⑱LED点阵显示箭头朝东的图案 ....................⑲小车以80%速度原地左旋 ....................⑳延时时间1000毫秒 ....................㉑LED点阵显示箭头朝西的图案 ....................㉒小车以80%速度原地右旋 ....................㉓延时时间1000毫秒 ....................㉔LED点阵显示箭头朝东的图案 ....................㉕小车停止 ....................㉖延时时间1000毫秒 ![](media/31551914803b87afd6b84461887f1a86.png) 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/86047f2910126ce2ceabb92df6e9c66f.png) 代码2: 路线图 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.17:电机驱动\Code-2|microbit-电机驱动-2.hex| (特别注意:由于控制小车扩展板上的右边红外避障传感器的引脚和micro:bit上控制按键B的引脚都是P11,为了防止右边红外避障传感器干扰按键B,这里需要用“一”字螺丝刀顺时针旋转右边的电位器RP9,将右边红外避障传感器关闭。)否则,代码成功下载到microbit后,按下按键A,micro:bit上的LED点阵显示图案的同时,小车立马运动起来,按键B没有起到控制作用。 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“led 启用 fasle”放入“当开机时”指令方块中,点击“false”后面的下拉三角形按钮选择“true”。 ![](media/a745aed806bdfa7f75e7b4ff2726ed87.png) (2)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中分别输入“a”,点击“OK”,建立了变量“a”。用同样的方法再建立变量“b”,拖出指令方块“将 b 设为 0”放入“当开机时”指令方块中,复制指令方块“将 b 设为 0”1次并放入“当开机时”指令方块中,点击第1个指令方块的b后面的下拉三角形按钮选择a。 ![](media/7313040de88e6d636d0083b54c977584.png) (3)先点击“输入”模块,找到并拖出指令方块“当按钮 A 被按下时”,再点击“变量”模块,找到并拖出指令方块“以 1 为幅度更改 b”放入“当按钮 A 被按下时”指令方块中,点击b后面的下拉三角形按钮选择a,其他的不变。 ![](media/2777cf22d12af8b0221bfe22d334023b.png) (4)复制代码串 ![](media/2777cf22d12af8b0221bfe22d334023b.png) 1次,点击A后面的下拉三角形按钮选择B,移除指令方块“以 1 为幅度更改 b”,再次点击“变量”模块,找到并拖出指令方块“将 b 设为 0”放入“当按钮 B 被按下时”指令方块中,将数字0改成1,其他的不变。 ![](media/c522971810168d8e92ef00bf285f2c62.png) (5)先点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...”放入“无限循环”指令方块中,接着又找到并拖出“=”方块放入true处的方框中,再点击“变量”模块,找到并拖出变量指令方块“a”放入“=”左侧,将“=”右侧的数字0改成1。 ![](media/e48448464b68759cb7ace3ffe00bb809.png) (6)点击“基础”模块,找到并拖出指令方块“显示 led”放入then下,点击灰蓝色小方框组成“L”图案。 ![](media/894d29ec2ce7e12fa4fa5038a3dae40a.png) (7)先点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...”放入第一个then下,接着又找到并拖出“=”方块放入true处的方框中,再点击“变量”模块,找到并拖出变量指令方块“b”放入“=”左侧,将“=”右侧的数字0改成1。 ![](media/18ab430f5ed9758d8e1f3494dfd5d6e2.png) (8)先点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入第二个then下,设置延时时间为1000毫秒;再点击“K_Bit”模块,找到并拖出指令方块“car RunForward speed: 0 %”放入第二个then下,将数字0改成80;再复制指令方块“暂停 (ms) 1000”1次也放入第二个then下。 ![](media/5f21742533c6a68568eeda42aa7b89ea.png) (9)复制代码串 ![](media/0447bd87b6a8c0e23fabe872098d4caf.png) 1次也放入第二个then下,点击RunForward后面的下拉三角形按钮选择TurnLeft,将数字80改成65,再将延时1000毫秒改成延时650毫秒。 ![](media/d053347b1aa0fede6e1215781c959565.png) (10)又复制代码串 ![](media/0447bd87b6a8c0e23fabe872098d4caf.png) 1次放入第二个then下,其他的不变。 ![](media/f14a2352fd55af6bc02f21e3ff8831a1.png) (11)先点击“K_Bit”模块,找到并拖出指令方块“car stop”放入第二个then下,再点击“变量”模块,找到并拖出指令方块“set b to 0”也放入第二个then下。 ![](media/087834535bd4bafad062359f65486b2b.png) (12)先点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...”放入“无限循环”指令方块中,接着又找到并拖出“=”方块放入true处的方框中,再点击“变量”模块,找到并拖出变量指令方块“a”放入“=”左侧,将“=”右侧的数字0改成2。 ![](media/6ba7fd3bac1108e573473c802e70db8d.png) (13)点击“基础”模块,找到并拖出指令方块“刷新显示 leds”放入第三个then下,点击灰蓝色小方框组成“口”图案。 ![](media/a3fe5d4d91af7df191d8b083479ace5f.png) (14)先点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...”放入第三个then下,接着又找到并拖出“=”方块放入true处的方框中,再点击“变量”模块,找到并拖出变量指令方块“b”放入“=”左侧,将“=”右侧的数字0改成1。 ![](media/262021dc43ab3d19af31e02e27921058.png) (15)先点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入第四个then下,设置延时时间为1000毫秒;再点击“K_Bit”模块,找到并拖出指令方块“car RunForward speed: 0 %”放入第四个then下,将数字0改成80;再复制指令方块“暂停 (ms) 1000”1次也放入第四个then下。 ![](media/8c5ef714f1e075c7265f53fa57e27ad9.png) (16) 复制代码串 ![](media/8c5ef714f1e075c7265f53fa57e27ad9.png) 1次也放入第四个then下,点击RunForward后面的下拉三角形按钮选择TurnLeft,将数字80改成65,再将延时1000毫秒改成延时620毫秒。 ![](media/b65a16e4012badc603bec11814f77b21.png) (17)复制代码串 ![](media/b65a16e4012badc603bec11814f77b21.png) 2次也放入第四个then下,其他的不变。 ![](media/d575d681aa4d003a1d41c67aad41d484.png) (18)复制第二个then下的代码串 ![](media/3df257c8d9d3cc89ff6acc6737f7350e.png) 1次放入第四个then下。 ![](media/25eacf2b8ad1db7e2edb5f4dd9df7957.png) (19)先点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...”放入“无限循环”指令方块中,接着又找到并拖出“=”方块放入true处的方框中,再点击“变量”模块,找到并拖出变量指令方块“a”放入“=”左侧,将“=”右侧的数字0改成3;再从“变量”模块中找到并拖出指令方块“set b to 0”放入第五个then下,点击b后面的下拉三角形按钮选择a,将数字0改成1。 ![](media/4613c82d9fb3cacbbd4ff3a159213d8b.png) 完整的代码程序: ![](media/980582ef1d46052600be621d570d6058.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②打开LED点阵屏。 ....................③将变量a设为0 ....................④将变量b设为0 ....................⑤当按钮A被按下时 ....................⑥以1为幅度更改变量a ....................⑦当按钮A被按下时 ....................⑧将变量b设为1 ....................⑨在“无限循环”指令方块之内,程序循环运行。 ....................⑩当变量a=1成立时,运行then下的程序 ....................⑪LED点阵显示“L”图案 ....................⑫当变量b=1成立时,运行then下的程序 ....................⑬延时时间1000毫秒 ....................⑭小车以80%速度向前走 ....................⑮延时时间1000毫秒 ....................⑯小车以65%速度向左旋 ....................⑰延时时间650毫秒 ![](media/ebe8ff0061cb0ab74f37ff937fd302f5.png) ....................⑱小车以80%速度向前走 ....................⑲延时时间1000毫秒 ....................⑳小车停止 ....................㉑将变量b设为0 ....................㉒当变量a=2成立时,运行then下的程序 ....................㉓LED点阵显示“口”图案 ....................㉔当变量b=1成立时,运行then下的程序 ....................㉕延时时间1000毫秒 ....................㉖小车以80%速度向前走 ....................㉗延时时间1000毫秒 ....................㉘小车以65%速度向左旋 ....................㉙延时时间620毫秒 ....................㉖小车以80%速度向前走 ....................㉗延时时间1000毫秒 ....................㉘小车以65%速度向左旋 ....................㉙延时时间620毫秒 ....................㉚小车以80%速度向前走 ....................㉛延时时间1000毫秒 ....................㉜小车以65%速度向左旋 ....................㉝延时时间620毫秒 ....................㉞小车以80%速度向前走 ....................㉟延时时间1000毫秒 ....................㊱小车停止 ....................㊲将变量b设为0 ....................㊳当变量a=3成立时,运行then下的程序 ....................㊴将变量a设为1 ![](media/2da3645b136395202735e76a7c36e479.png) 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/aa9523b3a85da2221c133023ab568bf0.png) ![](media/ec0b88dcfb1a273bb343879ebc1599ea.png) 4.实验结果: 按照之前的方式将代码1下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。我们可以看到小车将前进1s,后退1s,左转1s,右转1s,原地左旋1s,原地右旋1s,停止1s,并且每种运动状态下LED点阵显示对应图案。一直循环。 用同样的方法将代码2下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。(特别注意:由于控制小车扩展板上的右边红外避障传感器的引脚和micro:bit上控制按键B的引脚都是P11,为了防止右边红外避障传感器干扰按键B,这里需要用“一”字螺丝刀顺时针旋转控制右边红外避障传感器的电位器RP9,将小车扩展板上的右边红外避障传感器关闭。)。当我们第一次按A键时,LED点阵会显示“L”图案,再按B键,可以看到小车前进的路径是“L”;当我们第二次按A键时,LED点阵会显示“口”图案,再按B键,可以看到小车前进的路径是“口”;当我们第三次按A键时,LED点阵会显示“L”,再按B键,可以看到小车前进的路径是“L”; ........;保持循环处于这种状态。 ### 18:循迹小车 #### 18.1:循迹传感器测试 ![](media/81a769b41214847d61628921b85d74ab.png) 1. 实验说明: keyes Micro:bit mini smart robot car 扩展板上包含两个循迹传感器元件,并且扩展板上自带两个电位器,用于调节传感器元件。循迹传感器其实也是红外传感器,这里用到的元件是TCRT5000红外对管,TCRT5000红外对管具有一个高发射功率红外发射二极管和一个高灵敏度红外接收管。当发射管的红外信号经反射被接收管接收后,接收管的电阻会发生变化,在电路上一般以电压的变化体现出来。电阻的变化取决于接收管所接收的红外信号强度,常表现在反射面的颜色和反射面接收管的距离。在检测的时候,黑色高电平有效,白色是为低电平有效。 红外对管寻迹: 当小车在白色底面行驶时,装在车下的红外发射管发射红外信号,经白色发射后,被接收管接收,一旦接收管接收到信号,输出端将输出低电平(0);当小车行驶到黑线时,红外线信号被黑色吸收后,将输出高电平(1),从而实现了通过红外线检测信号的功能。将检测到的信号送到单片机的I/O口,当I/O口检测到的信号为高电平(1)时,表明小车处于黑色的引线上;同理,当I/O口检测到的信号为低电平(0)时,表明小车处于白色地面上。 小车扩展板上的2个循迹传感器由micro bit控制板的P12和P13控制,小车扩展板上的左边循迹传感器由P13控制,小车扩展板上的右边循迹传感器由P12控制。在小车底部放上白纸,我们通过旋转小车扩展板前方的两个电位器,当小车扩展板上D2和D6指示灯亮起时,再拿起小车使小车扩展板上的万向轮离白纸的高度大概0.5cm,小车扩展板上D2和D6指示灯熄灭,这时灵敏度就调节好了。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 3. 实验代码: 代码1: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.18:循迹小车\8.18.1:循迹传感器测试\Code-1|microbit-循迹传感器测试-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到 USB”放入“当开机时”指令方块中。 ![](media/2c5c8a18c9897f0f0ae6868d173ab1ba.png) (2)点击“高级”下的“串行”模块,找到并拖出指令方块串行写入数值 “x”=0”放入“无限循环”指令方块中,再点击“引脚”模块,找到并拖出指令方块“数字读取引脚 P0 ”放入指令方块串行写入数值 “x”=0”中的0处,由于小车扩展板上的左边循迹传感器由P13控制,右边循迹传感器由P12控制,这里以右边循迹传感器读取数字信号为例,点击P0后面的下拉三角形按钮选择P12,将“x”改成“digital signal”。 ![](media/8d926882fa099ddbe1fc44eb181a66f9.png) (3)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中,设置延时200毫秒。 ![](media/f2dbb0a97a5ad85472b9750dc1141c1b.png) 完整的代码程序: ![](media/edc2fe386ce16705f88d8c97e8afbde7.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②串行重定向USB。 ....................③在“无限循环”指令方块之内,程序循环运行。 ....................④串行写入digital signal=P12读取的数字信号(1/0) ....................⑤延时时间200毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/230d5e13f5811c88b5f8af0fd7ef61a7.png) 按照之前的方式将代码1下载到microbit,micro USB数据线不要拔下来,利用micro USB数据线上电,接下来点击显示数据(设备)按钮: ![](media/830072d6e2029a76637886938d22f900.png) 显示数据(设备)中显示了小车扩展板上的右边循迹传感器检测到的数字信号,当右边循迹传感器检测到白色物体时,串口监视器窗口显示低电平(0),同时小车扩展板上D6指示灯亮起;当右边循迹传感器检测到黑色物体或未检测到物体时,串口监视器窗口显示高电平(1),同时小车扩展板上D6指示灯不亮。如下图: 如下图所示: ![](media/c8fb471be9d430db24ecc3cc7162850d.png) 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。这样,CoolTerm串口监视器显示出小车扩展板上的右边循迹传感器读取的数字信号。如下图: ![](media/e7703bb10f45bac4033ab44958dcb248.png) 代码2: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.18:循迹小车\8.18.1:循迹传感器测试\Code-2|microbit-循迹传感器测试-2.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“led 启用 fasle”放入“当开机时”指令方块中,点击“false”后面的下拉三角形按钮选择“true”。 ![](media/01e699c9ed756d52dcedbbd4cd7edd2b.png) (2)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入LL,点击“OK”,建立了变量“LL”。用同样的方法建立变量“RR”,拖出指令方块“将 RR 设为 0”放入“当开机时”指令方块中,复制指令方块“将 RR 设为 0”1次并放入“当开机时”指令方块中,点击第1个RR后面的下拉三角形按钮选择LL。 ![](media/c8cd27ea1567dc8b5e78ad99de80d897.png) (3)先点击“变量”模块,找到拖出指令方块“将 RR 设为 0”放入“无限循环”指令方块中,再点击“高级”下的“引脚”模块,找到并拖出指令方块“数字读取引脚 P0”放入to后面的数字0处。复制代码块“数字读取引脚 P0”1次也放入“无限循环”指令方块中,点击RR后面的下拉三角形按钮选择LL。由于小车扩展板上的左边循迹传感器由P13控制,右边循迹传感器由P12控制,所以把LL后面P0改成P13,RR后面P0改成P12。 ![](media/2908f4cc3eaaba2326a7663aae7a4177.png) (4)点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...否则”放入“无限循环”指令方块中,点击“ ![](media/7498c9151101cb7e9756a8b0a5485f90.png) ”图案2次,接着找到并拖出“与”方块放入true处的方框中。 ![](media/53fee6c0778e91f8d57ecf831993a859.png) (5)先点击“逻辑”模块,找到并拖出“=”方块放入and左侧,再点击“变量”模块,找到拖出变量指令方块“LL”放入“=”左侧,“=”右侧的数字0不变。接着复制代码块“LL=0”1次放入and右侧,点击LL后面的下拉三角形按钮选择RR,将数字0改成1。 ![](media/b57da4ada75fe09a70bea1e1f0b1986b.png) (6)点击“基础”模块,找到并拖出指令方块“刷新显示 leds”放入第一个then下,点击右侧的灰蓝色小方框组成“I”图案。 ![](media/ed5da8b0feb487e88e31b6b528edd3b3.png) (7)复制代码块“LL=0 与 RR=1”1次放入第一个 否则 如果 后面的方框中,将and左侧的数字0改成1,and右侧的数字1改成0。 ![](media/229da1980c05b328fb8f190ac9419dee.png) (8)点击“基础”模块,找到并拖出指令方块“显示 led”放入第二个then下,点击左侧的灰蓝色小方框组成“I”图案。 ![](media/3e54db7695637ba89746b6c0e84128bc.png) (9)复制代码块“LL=1 与 RR=0”1次放入第二个else if 后面的方框中,and左侧的数字1不变,将 与 右侧的数字0改成1。 ![](media/3e54db7695637ba89746b6c0e84128bc.png) (10)点击“基础”模块,先找到并拖出指令方块“显示图标 ❤”放入第三个then下,点击“❤”图案后面的下拉三角形按钮选择“ ![](media/aaa1b518e463aef56f86c35ab6f0d1df.png) ”图案。再次拖出指令方块“刷新显示 icon ❤”放入else下。 ![](media/24190d419a1ae9c267f2c876e14d1e9f.png) 完整的代码程序: ![](media/1812b913fafaa11bc44176965f12593c.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②打开LED点阵。 ....................③将变量LL设为0 ....................④将变量RR设为0 ....................⑤在“无限循环”指令方块之内,程序循环运行。 ....................⑥将变量RR设为P12读取的数字信号(1/0) ....................⑦将变量LL设为P13读取的数字信号(1/0) ....................⑧当变量LL=0和RR=1成立时,执行then下的程序 ....................⑨LED点阵左边显示“I”图案 ....................⑩当变量LL=1和RR=0成立时,执行then下的程序 ....................⑪LED点阵右边显示“I”图案 ....................⑫当变量LL=1和RR=1成立时,执行then下的程序 ....................⑬LED点阵显示“![](media/aaa1b518e463aef56f86c35ab6f0d1df.png)”图案 ....................⑭当上述条件都不成立时,执行else下的程序 ....................⑮LED点阵显示“❤”图案 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/b1db92c5bed2d3b48d1dece98106544b.png) 代码3: 代码2看起来是不是有点儿复杂,能不能对它简化呢?回答是,可以的。我们可以利用外加的库文件中的指令方块“ ![](media/1dc4bbb19e0ebf13c9f17cce2beba90e.png) ”来简化它,我们已经通过代码1实验知道循迹传感器读取的数字信号(高电平(1)和低电平(0))。如果是两个循迹传感器合起来一起用,即2路巡线,是可以用2位二进制数来表示2路巡线值,但是我们把用2位二进制数来表示2路巡线值转化成用1位十进制数来表示2路巡线值就更好了,如下图。这样,代码就可以大大的简化。 左、右循迹传感器(电平)|二进制|十进制| |低|高|01|1| |高|低|10|2| |高|高|11|3| |低|低|00|0| 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|..1.Makecode教程\micro:bit测试程序\8.18:循迹小车\8.18.1:循迹传感器测试\Code-3|microbit-循迹传感器测试-3.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到 USB”放入“当开机时”指令方块中。 ![](media/4c96de72117456b81a30e3122f28f574.png) (2)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入val,点击“OK”,建立了变量“val”,拖出指令方块“将 val t设为0”放入“当开机时”指令方块中。 ![](media/fafeb17db5974a54f116e385762740c8.png) (3)先点击“变量”模块,找到拖出指令方块“将 val 设为 0”放入“无限循环”指令方块中,再点击“K_Bit”模块,找到并拖出指令方块“Line Tracking”放入to后面的数字0处。 ![](media/4be7ca67b3059b8d6c7c57291a0de881.png) (4)点击“高级”下的“串行”模块,找到并拖出指令方块串行写入数值 “x”=0”放入“无限循环”指令方块中,再点击“变量”模块,找到并拖出变量指令方块“val”放入指令方块串行写入数值 “x”=0”中的数字0处。 ![](media/b91715ba35edbbb300a9536957f32e4b.png) (5)点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...否则”放入“无限循环”指令方块中,点击“ ![](media/7498c9151101cb7e9756a8b0a5485f90.png) ”图案2次,接着找到并拖出“=”方块放入true处的方框中。 ![](media/055392cd9a84f97da60f052ca0536fba.png) (6)点击“变量”模块,找到并拖出变量指令方块“val”放入“=”左侧方框,将“=”右侧的数字0改成1。 ![](media/40ca6a5dae9b3aa39055189ec33df28e.png) (7)点击“基础”模块,找到并拖出指令方块“显示 led”放入第一个then下,点击右侧的灰蓝色小方框组成“I”图案。 ![](media/b825b0b088a9f6833bf5985692a9f2b8.png) (8)复制代码块“val=1 ”1次放入第一个else if 后面的方框中,将“=”右侧的数字1改成2。 ![](media/c594b4ca10d9e7e1788ff79e38056f58.png) (9)点击“基础”模块,找到并拖出指令方块“显示 led”放入第二个then下,点击左侧的灰蓝色小方框组成“I”图案。 ![](media/0c5dcd1cf1570d45beacf6f2da4f04dd.png) (10)复制代码块“val=2 ”1次放入第二个 否则 如果 后面的方框中,将“=”右侧的数字2改成3。 ![](media/9be8b9df56a84b464caab86b7e48e0dc.png) (11)点击“基础”模块,先找到并拖出指令方块“显示图标 ❤”放入第三个then下,点击“❤”图案后面的下拉三角形按钮选择“ ![](media/aaa1b518e463aef56f86c35ab6f0d1df.png) ”图案。再次拖出指令方块“显示 图标 ❤”放入否则下。 ![](media/d40c06a085a3b1ccc8cbcfaafbc6a4f0.png) 完整的代码程序: ![](media/db439c7e90caf7bfdd53d11b9d361058.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②串行重定向USB。 ....................③将变量val设为0 ....................④在“无限循环”指令方块之内,程序循环运行。 ....................⑤将变量val为Line Tracking ....................⑥串行写入数值x=val ....................⑦当变量val=1成立时,执行then下的程序 ....................⑧LED点阵左边显示“I”图案 ....................⑨当变量val=2成立时,执行then下的程序 ....................⑩LED点阵右边显示“I”图案 ....................⑪当变量val=3成立时,执行then下的程序 ....................⑫LED点阵显示“![](media/aaa1b518e463aef56f86c35ab6f0d1df.png)”图案 ....................⑬当上述条件都不成立时,执行else下的程序 ....................⑭LED点阵显示“❤”图案 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/ae463068ba938ad8030ff6feecfcf7d5.png) 3.实验结果: 按照之前的方式将代码2下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。小车扩展板上只有左边循迹传感器检测到白色物体时,micro bit LED点阵左边显示“I”图案,同时小车扩展板上D2指示灯亮起; 小车扩展板上只有右边循迹传感器检测到白色物体时,micro:bit LED点阵右边显示“I”图案,同时小车扩展板上D6指示灯亮起; 小车扩展板上左、右两边循迹传感器都检测到黑色物体或或都未检测到物体时,micro:bit LED点阵显示“ ![](media/aaa1b518e463aef56f86c35ab6f0d1df.png) ”图案; 小车扩展板上左、右两边循迹传感器都检测到白色物体时,micro:bit LED点阵显示“❤”图案,同时小车扩展板上D2和D6指示灯都亮起。 用同样的方法,将代码3下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,接下来点击显示数据(设备)按钮: ![](media/936cc70790090f6553c90be6e0d3edc2.png) 小车扩展板上只有左边循迹传感器检测到白色物体时,显示数据(设备)中显示1(如下图),micro bit LED点阵左边显示“I”图案,同时小车扩展板上D2指示灯亮起; 小车扩展板上只有右边循迹传感器检测到白色物体时,显示数据(设备)中显示2(如下图),micro:bit LED点阵右边显示“I”图案,同时小车扩展板上D6指示灯亮起; 小车扩展板上左、右两边循迹传感器都检测到白色物体时,显示数据(设备)中显示0(如下图),micro:bit LED点阵显示“❤”图案,同时小车扩展板上D2和D6指示灯都亮起。 小车扩展板上左、右两边循迹传感器都检测到黑色物体或都未检测到物体时,显示数据(设备)中显示3(如下图),micro:bit LED点阵显示“ ![](media/aaa1b518e463aef56f86c35ab6f0d1df.png) ”图案。 按照之前的方式 ![](media/ae16b294e536e568527f068f4e9273f1.png) 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。这样,CoolTerm串口监视器显示出2路循迹传感器读取的1位十进制数。 ![](media/1c5e09a8b0b6d6d8d492a647b0c8900a.jpg) #### 18.2:循迹小车 ![](media/871a4382af7e78ac18c0271d4ec033f2.png) 1.实验说明: 前面的部分我们学习了循迹传感器和电机驱动的原理和应用,下面我们要结合这两个基本的循迹传感器和电机驱动来做一款循迹小车。 循迹,意思就是循着轨迹,也就是我们经常会看到的走黑线的循迹小车,原理是利用循迹传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给micro bit主板。micro bit主板对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现循迹小车自动寻迹的目的。 循迹小车行驶原理:若左边循迹传感器(红外对管1)和右边循迹传感器(红外对管2)都检测到黑线,小车直走;若只有左边循迹传感器(红外对管1)检测到黑线,小车向左转;若只有右边循迹传感器(红外对管2)检测到黑线,小车向右转;若左边循迹传感器(红外对管1)和右边循迹传感器(红外对管2)都未检测到黑线,小车停止。当黑线在循迹传感器(红外对管)下,对应的信号端给micro bit主板一个高电平会给micro bit主板一个高电平(1)。 ![](media/a16a844427530b0bb8b40e74e08bdf4e.png) 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 警告:循迹传感器应避免在阳光等有红外干扰的环境中使用。阳光中含有大量的不可见光,如红外线和紫外线。在阳光强烈的环境下,循迹传感器不能正常工作。 3. 编程思路: 循迹小车根据2路循迹传感器传输的巡线值采取不同的行动。 左、右循迹传感器(电平)|二进制|十进制|循迹智能车| |低|高|01|1|向右转| |高|低|10|2|向左转| |高|高|11|3|向前走| |低|低|00|0|停止| 程序流程图: ![](media/22553a6adef65822cdf9ca3fe483298a.png) 4. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.18:循迹小车\8.18.2:循迹小车测试|microbit-循迹小车.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: 1. 点击“基础”模块,找到并拖出指令方块“显示 图标 ♥”放入“当开机时”指令方块中,点击“❤”图案后面的下拉三角形按钮选择“ ![](media/b9b97ec13c745120243516b57a2f2fbc.png) ”图案。 ![](media/f3e718f54acdcec7624584a12b9e808f.png) 2. 点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/b144d8a73f77caa97aa10e3e67da55be.png) (4)又点击“Neopixel”模块,找到并拖出指令方块“strip 清除显示”放入指令方块“当开机时”中。 ![](media/40fb03c10744c1c5174626403ac1fcb3.png) (5)再次点击“Neopixel”模块,找到并拖出指令方块“strip 显示彩虹特效 (色相)从 1 到 360”放入指令方块“当开机时”中。 ![](media/329b785b56d85b831b7b2a5dfe6502c7.png) 1. 先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入tracking values,点击“OK”,建立了变量“tracking values”,拖出指令方块“将 tracking values 设为 0”放入“无限循环”指令方块中。再点击“K_Bit”模块,找到并拖出“Line Tracking”指令方块放入to后面的数字0处。 ![](media/89b17952b9825af05d37ad8acf594448.png) 2. 点击“逻辑”模块,先找到并拖出指令方块“如果为 true 则...否则”放入“无限循环”指令方块中,点击“ ![](media/08875ea2865d2ebad8c6bb016f6b4531.png) ”图案2次,再找到并拖出“=”方块放入true处方框中。 ![](media/cee679aabeb5547c5accd4853ef3929c.png) 3. 点击“变量”模块,找到并拖出变量指令方块“tracking values”放入“=”的左侧,将“=”右侧的数字0改成1。 ![](media/cee679aabeb5547c5accd4853ef3929c.png) 4. 点击“K_Bit”模块,找到并拖出“LeftSide motor run Forward speed: 0 %”放入第一个then下,将数字0改成40;复制代码块“LeftSide motor run Forward speed: 40 %”1次也放入第一个then下,点击LeftSide后面的下拉三角形按钮选择RightSide,再点击Forward后面的下拉三角形按钮选择Back。 ![](media/bbd1a79ee12457e3636864d239547631.png) 5. 复制代码块“tracking values=1”1次放入第一个else if后面的方框中,将数字1改成2。 ![](media/7552e33fcc5eac6c25e564e4154f8a4c.png) 6. 复制代码串 ![](media/7552e33fcc5eac6c25e564e4154f8a4c.png) 1次放入第二个then下,将LeftSide后面的Forward改成Back,再将RightSide后面的Back改成Forward。 ![](media/fbd98f272dd0b044130b98dd38ac968a.png) 7. 复制代码块“tracking values=2”1次放入第二个else if后面的方框中,将数字2改成3。 ![](media/a0e865c882ecbf5272bba634bf856175.png) 8. 点击“K_Bit”模块,找到并拖出“car RunForward speed: 0 %”放入第三个then下,将数字0改成25。 ![](media/2bfb1fa2cdb301826f1b5c0402f24a8f.png) 9. 点击“K_Bit”模块,找到并拖出“car stop”放入else下。 ![](media/14f6cf00a0ca2a54136bb45301d53c43.png) 完整的代码程序: ![](media/a191ec78b05b73f3395b34d8aac6b9fa.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②LED点阵显示“![](media/b9b97ec13c745120243516b57a2f2fbc.png)”图案。 ....................③将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................④关闭条带上所有的RGB灯。 ....................⑤在“无限循环”指令方块之内,程序循环运行。 ....................⑥strip上显示彩虹特效(色相)从1到360。 ....................⑦将变量tracking values设为2路循迹传感器读取的十进制巡线值。 ....................⑧当变量tracking values=1成立时,执行then下的程序 ....................⑨小车的左轮以40%速度前进 ....................⑩小车的右轮以40%速度后退 ....................⑪当变量tracking values=2成立时,执行then下的程序 ....................⑫小车的左轮以40%速度后退 ....................⑬小车的右轮以40%速度前进 ....................⑭当变量tracking values=3成立时,执行then下的程序 ....................⑮小车以20%速度前进 ....................⑯当上述变量tracking values的值都未成立时,执行else下的程序 ....................⑰小车停止 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/41614da0cb2aa9733640dfa2aecb976e.png) 5.实验结果: 按照之前的方式将代码下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,循迹小车能随着黑色轨迹前行。 特别注意:(1)小车循迹轨道,黑线的宽度必须大于两个循迹传感器之间的距离。 (2)测试小车时,不要在阳光明媚的太阳底下测试。测试过程中,如果出现问题,可在暗一点的环境中测试。 ### 19:超声波跟随小车 #### 19.1:超声波测距 ![](media/7d1365ccda9dfeff4ba6624f9413877c.png) 1. 实验说明: 自然界有一种叫蝙蝠的动物,蝙蝠在夜间飞行不是靠眼睛看的,而是靠耳朵和发音器官飞行的。蝙蝠在飞行时,会发出一种尖叫声,这是一种超声波信号,是人类无法听到的,因为它的音频很高。这些超声波的信号若在飞行路线上碰到其他物体,就会立刻反射回来,在接收到返回的信息之后,蝙蝠于振翅之间就完成了听、看、计算与绕开障碍物的全部过程。 超声波传感器模块的原理跟上面的原理是一样的,超声波传感器模块一触发信号后发射超声波,当超声波投射到物体而反射回来时,模块输出一回响信号,以触发信号和回响信号间的时间差,来判定物体的距离。超声波传感器有敏感范围大,无视觉盲区,不受障碍物干扰等特点,这项技术已经在商业和安全领域被使用25年多了,已经被证明是检测小物体运动最有效的方法。 我们看下超声波传感器模块的图片,两个像眼睛一样的东西,一个就是信号发射端,一个就是信号接收端。 ![](media/7d1365ccda9dfeff4ba6624f9413877c.png) 2.工作原理: ![](media/8ff02741199a0f03d8d814a4b72f27d7.png) (1)我们先拉低TRIG,然后至少给 10us 的高电平信号去触发; (2)触发后,模块会自动发射8个40KHZ的方波,并自动检测是否有信号返回; (3)如果有信号返回,通过ECHO输出一个高电平,高电平持续的时间便是超声波从发射到接收的时间。那么测试距离=高电平持续时间\*340m/s\*0.5。 3.规格参数: 工作电压:3-5.5V(DC) 工作电流:15mA 工作频率:40khz 最大探测距离:3m左右 最小探测距离:2-3cm 高精度可达 0.2cm 感应角度:不大于15度 输入触发脉冲:10us 的 TTL 电平 输出回响信号:输出 TTL 电平信号(高),与射程成正比 4.准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 5. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.19:超声波跟随小车\8.19.1:超声波测距|microbit-超声波测距.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到 USB”放入“当开机时”指令方块中。 ![](media/a78dbdb88086e789d6c938c680df9220.png) 1. 先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入i,点击“OK”,建立了变量“i”,拖出指令方块“将1设为 0”放入“当开机时”指令方块中。 ![](media/548067da0aac72209faa4014cd7d0f98.png) 2. 点击“变量”模块,找到并拖出指令方块“set i to 0”放入“无限循环”指令方块中。 ![](media/8d27068eea5fa59f21b88ccf9ef75c9f.png) 3. 先点击“高级”下的“串行”模块。找到并拖出指令方块“串行 串行写入数值 x=0”放入“无限循环”指令方块中,再点击“K_Bit”模块,找到并拖出“Ultrasonic”放入指令方块“串行 串行写入数值 x=0”中的“=”右侧的数字0处,将“=”左侧的x改成distance。 ![](media/11a9f71ec123e3741b69b2a6b03da417.png) (5)点击“逻辑”模块,先找到并拖出指令方块“如果为......则”放入“无限循环”指令方块中,再找到并拖出“=”方块放入true处方框中。 ![](media/8a96e385a49330e13f5d88f7a5583ca5.png) 4. 再点击“K_Bit”模块,找到并拖出“Ultrasonic”指令方块放入“=”左侧,点击“=”后面的下拉三角形按钮选择“\<”,再将“\<”右侧的数字0改成10。 ![](media/449164705256382cf1a3b5cf12412162.png) (6)先点击“循环”模块,找到并拖出指令方块“当条件为 true 执行”放入then下,再点击“逻辑”模块,找到并拖出“=”方块放入true处方框中。 ![](media/9878bbc7480a4a3a3ea8eb03546dbdf3.png) 5. 点击“变量”模块,找到并拖出变量指令方块“i”放入“=”左侧,点击“=”后面的下拉三角形按钮选择“\<”,再将“\<”右侧的数字0改成1。 ![](media/fc08c827a193b0ec796b3e9eb0301141.png) 6. 先点击“音乐”模块,找到并拖出“播放音乐 中 C 持续 1 节拍”指令方块放入执行中,再点击“基础”模块,找到并拖出指令方块“暂停(ms)100”点击100后面的下拉三角形按钮选择200。 ![](media/de928a7392ef79493a49ce8676bb240c.png) 7. 复制代码串 ![](media/de928a7392ef79493a49ce8676bb240c.png) 1次也放入执行中。 ![](media/9ab366bbccc19335bafe0a81e048ab03.png) 8. 点击“变量”模块,找到并拖出指令方块“以一为幅度更改i”放入 执行 中。 ![](media/2bc27e10a8bd341e86c13e1ba181462b.png) 完整的程序代码: ![](media/95006d326ffdedeb4164f5dcf3e22537.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②串行重定向USB ....................③将变量i设为0 ....................④在“无限循环”指令方块之内,程序循环运行。 ....................⑤将变量i设为0 ....................⑥串行写入数值distance=Ultrasonic ....................⑦当Ultrasonic\<10成立时,执行then下程序 ....................⑧当条件为变量i\<1成立时,执行do中程序 ....................⑨播放音调中C持续1节拍 ....................⑩延时时间200毫秒 ....................⑪播放音调中C持续1节拍 ....................⑫延时时间200毫秒 ....................⑬以1为幅度更改i 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/2bff695b050961b835dc8f6d2072a128.png) 6. 实验结果: 按照之前的方式将代码下载到micro:bit,micro USB数据线不要拔下来,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。接下来点击显示数据(设备)按钮: ![](media/2cd74c16ab3623f6752d3f5e59deea2e.png) 显示数据(设备)中显示了障碍物与超声波传感器模块之间的距离(如下图),并且当障碍物与超声波传感器模块的距离小于10cm时,小车控制板上无源蜂鸣器响起声音。 ![](media/422adea3e04563f038f7f28cd40efb2d.png) 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。这样,CoolTerm串口监视器显示结果,显示如下图: ![](media/c88ce484a935653373de5cdf72c727ed.png) #### 19.2:超声波跟随小车 ![](media/22834062949409e062f8674b92d99bc2.jpg) 1. 实验说明: 前面的课程我们结合了循迹传感器和小车扩展板等结合,制作了一款循迹小车;在这课程中,我们利用超声波模块和小车扩展板等结合,制作一个超声波跟随小车。它的原理就是,通过超声波传感器模块,测试出小车和前方障碍物的距离,然后根据测试距离控制小车运动状态。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 3. 编程思路: 程序流程图: ![](media/cd3c6bef1c7e3940003e90211836d332.png) 4. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.19:超声波跟随小车\8.19.2:超声波跟随小车|microbit-超声波跟随小车.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“基础”模块,找到并拖出指令方块“显示图标 ♥”放入“当开机时”指令方块中,点击“❤”图案后面的下拉三角形按钮选择“ ![](media/b9b97ec13c745120243516b57a2f2fbc.png) ”图案。 ![](media/6f5cdcf88e920399e91cfeae2618d75b.png) (2)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/7cf9bde2867c5f594758cc7b64f17ab5.png) (3)又点击“Neopixel”模块,找到并拖出指令方块“strip clear”放入指令方块“当开机时”中。 ![](media/0bb120c57411839afe9e220476db04f3.png) (4)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入distance,点击“OK”,建立了变量“distance”,拖出指令方块“将 distance 设为 0”放入“当开机时”指令方块中。 ![](media/ac36f084da9566b68421f37d5e7b6d78.png) 5. 先点击“变量”模块,拖出指令方块“将 distance 设为 0”放入“无限循环”指令方块中。再点击“K_Bit”模块,找到并拖出“Ultrasonic”指令方块放入to后面的数字0处。 ![](media/1f34d9b02e1a0451c63350cd829dafc2.png) 6. 点击“逻辑”模块,先找到并拖出指令方块“如果为 true 则”放入“无限循环”指令方块中,接着找到并拖出“与”方块放入true处方框中。 ![](media/fa8a62c57ed8a2c9c22738c6edf75707.png) (7)先点击“逻辑”模块,找到并拖出“=”放入“and”左侧方框中,再点击“变量”模块,找到并拖出变量指令方块“distance”放入“=”左侧方框中,点击“=”后面的下拉三角形按钮选择“≥”,接着将“≥”后面的数字0改成10,再复制代码块“distance≥10”1次放入“and”右侧的方框中,点击“≥”后面的下拉三角形按钮选择“≤”,将“≤”后面的数字10改成30。 ![](media/e3f657cf7788cdae2afccc524875bc98.png) (8)先点击“K_Bit”模块,找到并拖出指令方块“car RunForward speed: 0 %”放入then下,将数字0改成40;再点击“Neopixel”模块,找到并拖出指令方块“strip 显示颜色 红”放入then下。 ![](media/e44ad835f7eab8fbd3e6cede23496fde.png) 9. 复制代码串 ![](media/e44ad835f7eab8fbd3e6cede23496fde.png) 1次放入“无限循环”指令方块中,删除代码块“distance≥10”和“and”方块,将代码块“distance≤30”放入true处方框中,将“≤”后面的数字30改成6,点击RunForward后面的下拉三角形按钮选择RunBack,再点击红后面的下拉三角形按钮选择黄,其他的不变。 ![](media/31ec0ffc3acb4c8e87d636309b1d7b00.png) 10. 先复制代码串 ![](media/31ec0ffc3acb4c8e87d636309b1d7b00.png)1次放入“无限循环”指令方块中,删除代码块“distance≤6”和指令方块“car RunBack speed: 40 %”。接着点击“逻辑”模块,找到并拖出“or”方块放入true方框中,再找到并拖出“and”方块放入“or”的左侧方框中,复制代码块“distance≤6”1次放入“and”左侧方框中,点击“≤”后面的下拉三角形按钮选择“\>”,又复制代码块“distance≥10”1次放入“and”右侧方框中,点击“≥”后面的下拉三角形按钮选择“\<”,再复制代码块“distance≤30”1次放入“or”右侧方框中,点击“≤”后面的下拉三角形按钮选择“\>”,点击“K_Bit”模块,找到并拖出指令方块“car stop”放入then下,点击 黄 后面的下拉三角形按钮选择 白 。 ![](media/8e22e9c16aef83ee1b8adcda9a7a4c4a.png) 完整的代码程序: ![](media/0ddc95e413a5b562979311dfd87d0700.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②LED点阵显示“![](media/b9b97ec13c745120243516b57a2f2fbc.png)”图案。 ....................③将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................④关闭条带上所有的RGB灯。 ....................⑤将变量distance设为0 ....................⑥在“无限循环”指令方块之内,程序循环运行。 ....................⑦将变量distance设为超声波传感器读取的距离值。 ....................⑧当10cm≤distance≤30cm成立时,执行then下的程序 ....................⑨小车以40%速度前进 ....................⑩strip上18个RGB都亮红色灯 ....................⑪当distance≤6cm成立时,执行then下的程序 ....................⑫小车以40%速度后退 ....................⑬strip上18个RGB都亮黄色灯 ....................⑭当6cm\30cm成立时,执行then下的程序 ....................⑮小车停止 ....................⑯strip上18个RGB都亮白色灯 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/09479b0d2e4291f3868fddd3e99d859e.png) 4.实验结果: 按照之前的方式将代码下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车可以跟随前方障碍物的移动而移动。小车不同的运动状态,KEYES-2812-18R模块上18个RGB灯亮起不同的颜色。 注意:障碍物只能在小车的正前方移动,不能拐弯。 ### 20:避障小车和跟随小车 #### 20.1:红外避障检测 ![](media/cdd665626233e3f8e9db635fd8fd093d.png) 1. 实验说明: 在小车扩展板上的左右前方自带有两个红外避障传感器,可用于设计红外避障小车。避障传感器基本原理,和循迹传感器工作原理基本相同,利用物体的反射性质。 每个红外避障传感器都有一对红外线发射管与接收管,发射管发射出一定频率的红外线,在一定范围内,如果在检测方向没有遇到障碍物(反射面)时,发射出去的红外线,因为传播距离越远而逐渐减弱,最后消失。如果在检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,传感器检测到这一信号,就可以确认检测方向有障碍物,并送给单片机,此时指示灯(SIG1/SIG2 LED)亮起,单片机进行一系列的处理分析,协调小车两轮工作,完成一个漂亮的躲避障碍物动作。同时传感器感应到障碍物时信号端输出低电平(0),未感应到障碍物时信号端输出高电平(1)。我们还可以通过调节电位器来调节感应灵敏度,调节电位器使SIG1/SIG2 LED介于不亮与亮的临界点时,灵敏度(检测距离)最好,为10cm。红外避障传感器通常用于智能小车避障、黑白线循迹、防跌落,产品计数器,流水线切割,液位检测等。 同时小车扩展板上左边的红外避障传感器控制端为P2,右边的红外避障传感器控制端为P11。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 3. 实验代码: 代码1: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.20:避障小车和跟随小车\8.20.1:红外避障检测\Code-1|microbit-红外避障检测-1.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到 USB”放入“当开机时”指令方块中。 ![](media/453f469e2ded2099a2cd906624650740.png) (2)点击“高级”下的“串行”模块,找到并拖出指令方块串行写入数值 “x”=0”放入“无限循环”指令方块中。 ![](media/73c1c0bab268d765b7feb8bc1cb08c45.png) (3)点击“K_Bit”模块,找到并拖出指令方块“LeftSide obstacle sensor”放入“=”右侧的数字0处,将“=”左侧的“x”改成“digital signal”。 ![](media/f2e9910851a81bb61db7391ee141dd5c.png) (5)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入指令方块“无限循环”中,设置延时时间为200毫秒。 ![](media/6350fd1ec55f275b68fedf01fa1fe47f.png) 完整的代码程序: ![](media/6350fd1ec55f275b68fedf01fa1fe47f.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②串行重定向USB。 ....................③在“无限循环”指令方块之内,程序循环运行 ....................④串行写入digital signal=左侧避障传感器读取的数字信号 ....................⑤延时时间200毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/674c390a1fcc73fb87486acbf255878c.png) 按照之前的方式将代码下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,接下来点击显示数据(设备)按钮: ![](media/d1048e2dedb6bb757e2fccb7354db6f5.png) 显示数据(设备)中显示了小车扩展板上的左边红外避障传感器检测到的数字信号,当左边红外避障传感器检测到有障碍物时,信号端输出低电平(0),如下图,同时小车扩展板上SIG1指示灯亮起;当左边红外避障传感器未检测到有障碍物时,信号端输出高电平(1)。 ![](media/fdbeb3b157ee7f9619e26bf32f066776.png) 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。这样,CoolTerm串口监视器显示小车扩展板上的左边红外避障传感器检测到的数字信号,显示如下图。 ![](media/e7703bb10f45bac4033ab44958dcb248.png) 代码2: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.20:避障小车和跟随小车\8.20.1:红外避障检测\Code-2|microbit-红外避障检测-2.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先点击“Led”模块,再点击“Led”模块下的“更多”,找到并拖出指令方块“led 启用 fasle”放入“当开机时”指令方块中,点击fasle后面的下拉三角形按钮选择true。 ![](media/e6b67fbb311a1931068c6277d5910773.png) (2)点击“逻辑”模块,先找到并拖出指令方块“如果为 true 则...else”放入“无限循环”指令方块中,点击“ ![](media/08875ea2865d2ebad8c6bb016f6b4531.png) ”图案2次,再找到并拖出“与”方块放入true处方框中。 ![](media/3953483cd303efb2e1df7a5a0b5e048d.png) (3)先点击“逻辑”模块,找到并拖出方块“=”放入“and”左侧方框中,接着点击“K_Bit”模块,找到并拖出指令方块“LeftSide obstacle sensor”放入“=”左侧,“=”右侧的数字0不变,再复制代码块“LeftSide obstacle sensor=0”1次放入“and”右侧方框中,点击LeftSide后面的下拉三角形按钮选择RightSide,其他的不变。 ![](media/4865749216252ef0972d545e6e4da427.png) (4)点击“基础”模块,找到并拖出指令方块“显示 图标 ❤”放入第一个then下,点击“❤”图案后面的下拉三角形按钮选择“ ![](media/c0e3d86925a1aa0f07d9aca06b315de4.png) ”图案。 ![](media/b57c0ed27397139125db449de749c62d.png) (5)复制代码块“LeftSide obstacle sensor=0 与 RightSide obstacle sensor=0”1次放入第一个else if后面的方框中,将 与 右侧的数字0改成1,其他的不变。 ![](media/a912631f407fbb3424df25d42fd12471.png) (6)点击“基础”模块,找到并拖出指令方块“刷新显示 leds”放入第二个then下,点击一些黑蓝色小方框组成“→”图案。 ![](media/b8e7c364ebaa13bf495e131bfc84777d.png) 7. 又复制代码块“LeftSide obstacle sensor=0 与 RightSide obstacle sensor=0”1次放入第二个else if后面的方框中,将 与 左侧的数字0改成1,其他的不变。 ![](media/6c42c51cefd2ea9789036b1d7ed04285.png) (8)又点击“基础”模块,找到并拖出指令方块“显示 led”放入第二个 与 下,点击一些黑蓝色小方框组成“←”图案。 ![](media/3493a6143feffad6b414ed19e9e1e505.png) (9)再点击“基础”模块,找到并拖出指令方块“显示 led”放入 否则 下,点击一些黑蓝色小方框组成“↑”图案。 ![](media/02bf561a40443f9a4ff88ed14f28ab84.png) 完整的代码程序: ![](media/1b4a401349d6d9eb2412826485f4b0a6.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②打开LED点阵屏。 ....................③在“无限循环”指令方块之内,程序循环运行 ....................④当LeftSide obstacle sensor=0 与 RightSide obstacle sensor=0成立时,执行then下程序 ....................⑤LED点阵显示“![](media/c0e3d86925a1aa0f07d9aca06b315de4.png)”图案 ....................⑥当LeftSide obstacle sensor=0 与 RightSide obstacle sensor=1成立时,执行then下程序 ....................⑦LED点阵显示“→”图案 ....................⑧当LeftSide obstacle sensor=1 与 RightSide obstacle sensor=0成立时,执行 与 下程序 ....................⑨LED点阵显示“←”图案 ....................⑩当以上条件都未成立时,执行 否则下程序 ....................⑪LED点阵显示“↑”图案 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/4addb3f9ca96c58c11823b07adfab782.png) 4. 实验结果: 按照之前的方式将代码2下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。小车扩展板上两个红外避障模块可检测前方障碍物。 1. 两边的红外避障模块都检测到障碍物时,LED点阵显示笑脸;(2)左边红外避障模块检测到障碍物而右边的没检测到时,LED点阵显示箭头朝左;(4)右边红外避障模块检测到障碍物而左边没检测到时,LED点阵显示箭头朝右;(4)两边的红外避障模块都没检测到障碍物时,LED点阵显示箭头朝上; #### 20.2:避障小车 ![](media/6402a37d15f7d567d3d483831f172751.png) 1.实验说明: 现今发达的交通在给人们带来便捷的同时也带来了许多的交通事故,发生交通事故的因素有很多。当然,如果我们的汽车能够更加智能,就是说事先能预测并显示前面障碍物离车的距离,当障碍物距离很近时汽车会自动采取一些措施避开障碍物,这样就能够在很大程度上避免这些事故的发生。 由于前面的课程我们结合了超声波模块和小车扩展板等结合,制作了一款超声波跟随小车;在这课程中,我们将利用超声波模块、红外避障传感器和小车扩展板等结合,制作一个避障小车。 它的原理就是,通过超声波模块测试出小车和前方障碍物的距离,利用小车扩展板上两个红外避障传感器检测左、右两侧的障碍物,然后根据测试结果控制小车运动状态。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 [警告:避障传感器应避免在阳光等有红外干扰的环境中使用。阳光中含有大量的不可见光,如红外线和紫外线。在阳光强烈的环境下,避障传感器不能正常工作。](#M11) 3. 编程思路: 程序流程图: ![](media/0e24ffadcf40fd5c30446870c5dc3752.png) 4. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|..1.Makecode教程\micro:bit测试程序\8.20:避障小车和跟随小车\8.20.2:避障小车|microbit-避障小车.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/032ad9d4f4d4fa50f400a1ea120fdb40.png) (2)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中分别输入“distance”,点击“OK”,建立了变量“distance”。用同样的方法再分别建立变量“val_L”和“val_R”,找到并拖出指令方块“将 val_R 设为 0”放入“当开机时”指令方块中,点击val_R后面的下拉三角形按钮选择distance。 ![](media/08ea8f5b07642196fc34b94844441a07.png) (3)先点击“变量”模块,找到并拖出指令方块“将 val_R 设为 0”放入“无限循环”指令方块中,并复制指令方块“将 val_R 设为 0”2次也放入“无限循环”指令方块中,点击val_R后面的下拉三角形按钮分别选择distance、val_L、val_R,再点击“K_Bit”模块,依次找到并拖出指令方块“Ultrasonic”放入distance后面的数字0处,拖出指令方块“LeftSide obstacle sensor”放入val_L后面的数字0处,再次拖出指令方块“LeftSide obstacle sensor”放入val_R后面的数字0处并点击LeftSide后面的下拉三角形按钮选择RightSide。 ![](media/72f635def5afde06472e1c81a25d79c9.png) (4)点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...否则”放入“无限循环”指令方块中,先点击“ ![](media/7498c9151101cb7e9756a8b0a5485f90.png) ”图案4次,再点击 否则 后面的“ ![](media/c5b6ddae20f65547fea6200fbfa5a3e8.png) ”图案删除 否则,接着找到并拖出“and”方块放入true处的方框中。 ![](media/8de684a5c810db5af7616140e7ed04a0.png) (5)先点击“逻辑”模块,找到并拖出“=”方块放入“and”方块的左侧方框中,再点击“变量”模块,找到并拖出变量指令方块“val_L”放入“=”的左侧,“=”右侧的数字0不变,再复制代码块“val_L=0”1次放入“and”的右侧方框中,点击val_L后面的下拉三角形按钮选择val_R。 ![](media/eb4b3e7e0fe7a20a07ebb3177935bd79.png) (6)先点击“K_Bit”模块,找到并拖出指令方块“car RunForward speed:0%”放入第一个then下,点击RunForward后面的下拉三角形按钮选择RunBack,将数字0改成40;接着点击“Neopixel”模块,找到并拖出指令方块“strip 显示颜色 红”放入第一个then下;再点击“基础”模块,找到并拖出指令方块“暂停(ms)100”放入第一个then下,点击100后面的下拉三角形按钮选择1second;又复制指令方块“car RunBack speed:40%”1次放入第一个then下,点击RunBack后面的下拉三角形按钮选择TurnLeft,将speed后面的数字40改成20;最后复制指令方块“暂停(ms)1000”1次也放入第一个then下,点击1000后面的下拉三角形按钮选择200。 ![](media/0c290acc10e3d1ae55fb5669f6b9b2a5.png) (7)复制代码块“val_L=0 与 val_R=0”1次放入第一个 否则 如果 后面的方框中,将and左侧的数字0改成1,其他的不变。 ![](media/92c2cecb17529748d177f804627002da.png) (8)先复制第一个then下的指令方块“car TurnLeft speed:20%”1次放入第二个then下,又复制第一个then下的指令方块“strip 显示颜色 红”1次也放入第二个then下,点击 红 后面的下拉三角形按钮选择 紫。 ![](media/a9f8e22154b333c4415c86f5bea726db.png) (9)复制代码块“val_L=0 与 val_R=0”1次放入第二个 否则 如果 后面的方框中,将and右侧的数字0改成1,其他的不变。 ![](media/4c71d3200581864925a4045b4de7e9fa.png) (10)复制第二个then下的代码串 ![](media/d83fcaa5f6e7de1c037e587a763f307c.png) 1次放入第三个then下,先点击TurnLeft后面的下拉三角形按钮选择TurnRight,再点击紫 后面的下拉三角形按钮选择 黄 ,其他的不变。 ![](media/9feb60e7a3069b4f047f48f75dc14393.png) (11)先点击“逻辑”模块,找到并拖出方块“and”放入第三个else if 后面的方框中,接着又拖出“=”方块放入“and”左侧,再点击“变量”模块,找到并拖出变量指令方块“distance”放入“=”的左侧,点击“=”后面的下拉三角形按钮选择“≤”,将“≤”右侧的数字0改成10;复制代码块代码块“val_L=0 与 val_R=0”1次放入“and”右侧方框中,将val_L和val_R后面的数字0都改成1。 ![](media/46103d1dc359505fe1e0f67ac9fcc905.png) (12)复制第2个then下的代码串 ![](media/da3e1da689e4bf41dbdab8df9c24c89a.png) 1次放入第四个then下,点击 紫 后面的下拉三角形按钮选择 蓝,其他的不变。 ![](media/13b9e76c2c921e731e263fdc75bf6555.png) (13)复制代码块“distance≤10 与 val_L=1 与 val_R=1”1次放入第四个否则 如果 后面的方框中,点击“≤”后面的下拉三角形按钮选择“\>”,其他的不变。 ![](media/fbc9b525e6761a94c84e8230833f2428.png) (14)复制第2个then下的代码串 ![](media/da3e1da689e4bf41dbdab8df9c24c89a.png) 1次放入第五个then下,点击TurnRight后面的下拉三角形按钮选择RunForward,将speed后面的数字20改成40,点击 紫 后面的下拉三角形按钮选择 绿 。 ![](media/f255b42769e09abf11a89f7f9b41b73b.png) 完整的代码程序: ![](media/87b0cb4ba8a9aad640f624e1de2b9e7e.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................③将变量distance设为0 ....................④在“无限循环”指令方块之内,程序循环运行。 ...................⑤将变量distance设为超声波传感器读取的距离值。 ....................⑥将变量val_L设为左边避障传感器读取的数字信号 ....................⑦将变量val_R设为右边避障传感器读取的数字信号 ....................⑧当val_L=0且val_R=0成立时,执行then下的程序 ....................⑨小车以40%速度后退 ....................⑩strip上18个RGB亮红色灯 ....................⑪延时时间1000毫秒 ....................⑫小车以20%速度向左转 ....................⑬延时时间200毫秒 ....................⑭当val_L=1且val_R=0成立时,执行then下的程序 ....................⑮小车以20%速度向左转 ....................⑯strip上18个RGB亮紫色灯 ....................⑰当val_L=0且val_R=1成立时,执行then下的程序 ....................⑱小车以20%速度向右转 ....................⑲strip上18个RGB亮黄色灯 ....................⑳当distance≤10且val_L=1且val_R=1成立时,执行then下的程序 ....................㉑小车以20%速度向右转 ....................㉒strip上18个RGB亮蓝色灯 ....................㉓当distance>10且val_L=1且val_R=1成立时,执行then下的程序 ....................㉔小车以40%速度前进 ....................㉕strip上18个RGB亮绿色灯 ⑳㉑㉒㉓㉔㉕ ![](media/492ebab0dac1689916359e7e80b328a3.png) 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/ad71910ccf1e69dc39d61eb496e36ad6.png) 5. 实验结果: 按照之前的方式将代码下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车会自动避开左、右两边和前方的障碍物行走。 #### 20.3:多方向跟随小车 ![](media/57ef2720142f0389eb040896098ada03.jpg) 1.实验说明: 随着科学技术的发展,人们越来越需要一种能够解放双手,提高工作效率,自动搬运货物的系统。本课程中介绍一种基于超声波定位、红外避障传感器和microbit主板控制的自动跟随小车。该小车通过安装在前方的1个超声波传感器实时测距,监测小车与主人的位置信息,配合小车左、右两边的红外避障传感器,反馈给microbit主板来调整小车的动作和速度。 在前面的课程中,我们结合了超声波模块和小车扩展板等结合,也制作了一款超声波跟随小车,但是这个小车不能拐弯,只能在一条只直线上跟随。但在这课程中,我们利用超声波模块、红外避障传感器和小车扩展板等结合,制作一个可以拐弯的跟随小车。 它的原理就是,通过超声波模块测试出小车和前方障碍物的距离,利用小车扩展板上红外避障传感器检测左、右两边的障碍物,然后根据测试结果控制小车运动状态。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 警告:避障传感器应避免在阳光等有红外干扰的环境中使用。阳光中含有大量的不可见光,如红外线和紫外线。在阳光强烈的环境下,避障传感器不能正常工作。 3. 编程思路: 程序流程图: ![](media/910e823024216b7f479c144a2eeb92ea.jpg) 3.实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.20:避障小车和跟随小车\8.20.3:多方向跟随小车|microbit-多方向跟随小车.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击 RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/baf5f0a0ea22390c3ad016b63ce58a4e.png) (2)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中分别输入“distance”,点击“OK”,建立了变量“distance”。用同样的方法再分别建立变量“val_L”和“val_R”,找到并拖出指令方块“set val_R to 0”放入“当开机时”指令方块中并复制2次也放入“当开机时”指令方块中,点击第一个val_R后面的下拉三角形按钮选择distance,再点击第二个val_R后面的下拉三角形按钮选择val_L。 ![](media/990cf4726e75f04089c7e98b26142a13.png) ![](media/990cf4726e75f04089c7e98b26142a13.png) (3)先复制“当开机时”指令方块中的代码串1次放入“无限循环”指令方块中,再点击“K_Bit”模块,依次找到并拖出指令方块“Ultrasonic”放入distance后面的数字0处,拖出指令方块“LeftSide obstacle sensor”放入val_L后面的数字0处,再次拖出指令方块“LeftSide obstacle sensor”放入val_R后面的数字0处并点击LeftSide后面的下拉三角形按钮选择RightSide。 ![](media/dd228beeab87877a97a4261bce34cc11.png) (4)点击“逻辑”模块,找到并拖出指令方块“如果为 true 则...否则”放入“无限循环”指令方块中,先点击“ ![](media/7498c9151101cb7e9756a8b0a5485f90.png) ”图案4次,接着找到并拖出“and”方块放入true处的方框中,然后又拖出“and”方块2次分别放入“and”左侧和右侧。 ![](media/58400e24be1f54f79c810d4a6d45e06d.png) (5)先点击“逻辑”模块,找到并拖出“=”方块放入第一个“and”左侧方框中,再点击“变量”模块,找到并拖出变量指令方块“distance”放入“=”的左侧,点击“=”后面的下拉三角形按钮选择“\>”,将“\>”右侧的数字0改成3,再复制代码块“distance\>3”3次依次放入后面3个方框中,点击第二个“\>”后面的下拉三角形按钮选择“≤”,并将第二个数字3改成6;再点击下拉三角形按钮将第三个distance改成val_L,第四个distance改成val_R,同时后面两个“\>”都改成“=”,后面的两个数字3也都改成1。 ![](media/d0d06630e4be6f114fdcc2903e16728b.png) (6)先点击“K_Bit”模块,找到并拖出指令方块“car stop”放入第一个then下,接着再点击“Neopixel”模块,找到并拖出指令方块“strip 显示颜色 红”也放入第一个then下。 ![](media/c33e062eda013db027c82f6c95c17c42.png) (7)点击“逻辑”模块,着找到并拖出“或”方块放入第一个 否则 如果为 后面的方框中,复制代码块“distance≤6”1次放入“或”的左侧方框中,数字6改成3;再复制代码块“val_L=1 与 val_R=1”1次放入“or”右侧方框中,并将数字1都改成0。 ![](media/db150ae102f2f2080a886fd22605a628.png) 8. 点击“K_Bit”模块,找到并拖出指令方块“car RunForward speed: 0%”放入第二个then下,点击RunForward后面的下拉三角形按钮选择RunBack,数字0改成30;复制第一个then下的指令方块“strip 显示颜色 红”1次也放入第二个then下,点击 红 后面的下拉三角形按钮选择 紫。 ![](media/42bf5e5865a4374991340381f2c72ac8.png) 9. 复制第一个 否则如果为 后面的代码块“distance≤3 或 val_L=0 与 val_R=0”1次放入第二个else if 后面,点击“≤”后面的下拉三角形按钮选择“\>”,数字3改成6,点击 或 后面的下拉三角形按钮选择 与,并将数字0都改成1。 ![](media/2dd469ae210cec87f40b0ee966de8aa2.png) ![](media/f45c63b1b3dc59d6e166e8b4c45e2c1d.png) (10)复制代码串1次放入第三个then下,点击RunBack后面的下拉三角形按钮选择RunForward,接着又点击 紫后面的下拉三角形按钮选择 蓝,其他的不变。 ![](media/f3614cb91beae31b4cb8c9d10adf1b1c.png) (11)复制第二个 否则如果为 后面的代码块“val_L=1 与 val_R=1”1次放入第三个否则如果为 后面的方框中,将and左侧的数字0改成1,其他的不变。 ![](media/59d107a0e38958f4b18c3b89b396c826.png) (12)复制代码串 ![](media/f45c63b1b3dc59d6e166e8b4c45e2c1d.png) 1次放入第四个then下,点击RunBack后面的下拉三角形按钮选择TurnLeft,接着又点击 紫 后面的下拉三角形按钮选择 绿,其他的不变。 ![](media/9d006e3e41082666ac6c48d594fe2607.png) (13)复制第三个 否则如果为 后面的代码块“val_L=0 与 val_R=1”1次放入第四个 否则如果为 后面的方框中,将and左侧的数字0改成1,右侧的数字1改成0。 ![](media/912b449c494d0635f31e91a9625ff5a1.png) (14)复制代码串 ![](media/f45c63b1b3dc59d6e166e8b4c45e2c1d.png) 1次放入第五个then下,点击RunBacK后面的下拉三角形按钮选择TurnRight,接着又点击 紫 后面的下拉三角形按钮选择 黄,其他的不变。 ![](media/ec7644b220d868c358abf43d88ac3767.png) ![](media/13ca31923d8b654d645155046305c666.png) (15)复制第一个then下的代码串1次放入 否则 下。 ![](media/ee84d9832ff2aff19b30fd8f9fa0eda9.png) 完整的代码程序: ![](media/56166fb4b9b9f1a79d900ea09559a4f6.png) ![](media/52d12d614070ff2b1f949f210a272edd.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................③将变量distance设为0 ....................④将变量val_L设为0 ....................⑤将变量val_R设为0 ....................⑥在“无限循环”指令方块之内,程序循环运行。 ....................⑦将变量distance设为超声波传感器读取的距离值。 ....................⑧将变量val_L设为左边避障传感器读取的数字信号 ....................⑨将变量val_R设为右边避障传感器读取的数字信号 ....................⑩当distance\>3且distance≤6且val_L=1且val_R=1成立时,执行then下的程序 ....................⑪小车停止 ....................⑫strip上18个RGB亮红色灯 ....................⑬当distance≤3或val_L=0且val_R=0成立时,执行then下的程序 ....................⑭小车以30%速度后退 ....................⑮strip上18个RGB亮紫色灯 ....................⑯当distance\>6且val_L=1且val_R=1成立时,执行then下的程序 ....................⑰小车以30%速度前进 ....................⑱strip上18个RGB亮蓝色灯 ....................⑲当val_L=0且val_R=1成立时,执行then下的程序 ....................⑳小车以30%速度向左转 ....................㉑strip上18个RGB亮绿色灯 ....................㉒当val_L=1且val_R=0成立时,执行then下的程序 ....................㉓小车以30%速度向右转 ....................㉔strip上18个RGB亮黄色灯 ....................㉕当以上条件都未成立时,执行else下的程序 ....................㉖strip上18个RGB亮红色灯 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/0fe74f97952449985ac05198ef0ca132.png) 4.实验结果: 按照之前的方式将代码下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,小车会自动跟着障碍物向多方向运动。 ### 21:红外控制小车 #### 21.1:红外遥控解码 ![](media/1961c28e1ab1f3e1d24a61ce3c673756.png) 1. 实验说明: 毫无疑问,红外遥控在日常生活中随处可见,以至于很难想象没有它世界会变得怎样。它被用来控制各种家电,如电视、音响、录影机和卫星信号接收器。红外遥控是由红外发射和红外接收系统组成的,也就是一个红外遥控器和红外接收模块和一个能解码的单片机组成的,我们看图示。 ![](media/3ca9b64a7bf1dc6acf71cf1f60e0610a.png) 红外发射的遥控器发射的38K红外载波信号是由遥控器里的编码芯片对其进行编码。它是以一段引导码,用户码,数据码,数据反码组成,利用脉冲的时间间隔来区别是信号0还是信号1(高电平低电平之比约为1:1时被认为是信号0),而编码就是由这些0 、1信号组成。同一个遥控器的用户码是不变的,用数据吗不同来分辨遥控器按的键不同。当按下遥控器按键时,遥控器发送出红外载波信号,红外接收器接收到信号时程序对载波信号进行解码,通过数据码的不同来判断按下的是哪个键。单片机由接收到的0、1信号进行解码,由此判断遥控器按下的是什么键。 红外接收就是扩展板上自带的红外接收模块,主要由红外接收头组成,它是集接收、放大、解调一体的器件,它内部IC就已经完成了解调,能够完成从红外线接收到输出与TTL电平信号兼容的所有工作,输出的就是数字信号。它适用于红外线遥控和红外线数据传输。 小车扩展板上的红外接收模块由micro bit控制板的P16控制的。 2. 规格参数: 工作电压:3.3-5V(DC) 接口:3PIN接口 输出信号:数字信号 接收角度:90度 频率:38khz 遥控范围:5米左右 3. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 4. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|1.Makecode教程\micro:bit测试程序\8.21:红外控制小车\8.21.1:红外遥控解码|microbit-红外遥控解码.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到 USB”放入“当开机时”指令方块中。 ![](media/ba8b97d3081f80b6c43be889a46c89e7.png) (3)点击“IrRemote”模块,找到并拖出指令方块“connect IR receiver at P0”放入“当开机时”指令方块中,由于小车扩展板上的红外接收模块由micro bit控制板的P16控制的,所以点击P0后面的下拉三角形按钮选择P16。 ![](media/d2b51f849b2cac80c2c616f7e33bd6bb.png) 4. 点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入“val”,点击“OK”,建立了变量“val”,拖出指令方块“将 val 设为0”放入指令方块“无限循环”中。 ![](media/58479a98076c69fcfa825fecd50906cb.png) 5. 点击“Ir Remote”模块,找到并拖出指令方块“IR button”放入指令方块“将 val 设为 0”中的to 后面的0处。 ![](media/2685109b1434fbb45946cd080dee9ed6.png) 6. 先点击“高级”下的“串行”模块,找到并拖出指令方块串行写入数值 “x”=0”放入“无限循环”指令方块中,将“x”改成“IR”,再点击点击“变量”模块,找到并拖出变量指令方块“val”放入“=”右侧的数字0处。 ![](media/fb9edd99bb2e7d6e08641491e0ce17f2.png) (7)点击“基础”模块,找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中,设置延时时间为1000毫秒。 ![](media/b8612e6493b0bd32e1839c7984343b66.png) 完整的代码程序: ![](media/4cca154de4d6408099ee64ec4e1eed57.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②串行重定向USB。 ....................③将IR接收器接在P16 ....................④在“无限循环”指令方块之内,程序循环运行 ....................⑤将val设为IR button ....................⑥串行写入数值IR=val ....................⑦延时时间1000毫秒 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/ff7a044ce34ea74782def518650dc6ac.png) 代码说明:没有按下红外遥控器上的按键时,串口监视器不断地刷新显示数字0。当按下红外遥控器上的按键时,串口监视器中显示出对应的按键键值。 特别注意: 1、有些红外遥控不带电池,需要自己配置,电池型号为CR2025。 2、测试前需要确保红外遥控是OK的,有一个小诀窍测试红外遥控是否OK。 打开手机摄像头拍照,红外遥控多准手机摄像头按下按键。如果在手机上看到有紫光闪烁,就代表红外遥控是OK的。 按照之前的方式将代码下载到micro:bit,micro USB数据线不要拔下来,利用micro USB数据线上电,接下来点击显示数据(设备)按钮: ![](media/e7bf712e0c8bedc4b0423427848fa395.png) 红外遥控器对准小车扩展板上的红外接收器,按下对应按键,显示数据(设备)窗口中就可以显示出对应按键的键值,显示如下图。 ![](media/c7a33a4cc9d6decbf9b653d91bcb5318.png) 如果你的电脑系统是Windows7/8而不是Windows 10,则在Google Chrome中是不能进行设备配对,从而读取不了相应的数字信号或模拟信号,可是又需要读取相应的传感器/模块的数字信号或模拟信号,那怎么办呢?这里就可以使用CoolTerm软件来读取串口的。 打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。这样,CoolTerm串口监视器显示对应按键的键值,显示如下图。 ![](media/3cc38d5e9c354290f0960a79071a5acf.jpg) 我们通过得出的数值,做了一个红外遥控器按键值表,方便以后使用。 ![](media/4eadf6549525d5b5a97cab2200a49e15.png) #### 21.2:红外控制小车 ![](media/5b3528604cf34eb461d3cd27bd25de12.png) 1. 实验说明: 红外遥控小车,可以使用红外遥控在一定范围内操控小车前进、后退、左转、右转,还可以控制小车上的各种外设的LED,传感器/模块等。 红外遥控小车的实现主要靠的是红外信号的传递,小车接收到红外信号后经过解码会得到具体的数值,小车再依据相应的数值来执行相对应的操作。 前面的课程我们结合了循迹传感器和小车扩展板等结合,制作了一款循迹小车;在这课程中,我们利用红外遥控和小车扩展板等结合,制作一个红外控制小车。 它的原理就是,通过红外遥控发送按键信号,小车扩展板上红外接收模块接收到对用的按键信号,从而控制小车进行对应的运动状态。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit扩展库。 如果选择手动拖动代码,则首先需要添加k-bit扩展库。 3. 编程思路: 编程流程图: ![](media/4a5444fa6e5fe99e328047f29ee9b012.png) 4. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.21:红外控制小车\8.18.2:红外控制小车|microbit-红外遥控小车.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)点击“Ir Remote”模块,找到并拖出指令方块“connect IR receiver at P0”放入“当开机时”指令方块中,由于小车扩展板上的红外接收器是由micro:bit板的P16控制的,所以点击P0后面的下拉三角形按钮选择P16。 ![](media/1e3ec9a872a08f084af52a67dac8c3fc.png) (2)点击“Neopixel”模块,找到并拖出指令方块“将 strip 设为 引脚 P0初始化灯带 24 颗LED 模式 RGB(GRB 顺序)”放入指令方块“当开机时”中,由于KEYES-2812-18R模块的信号端D1是接在小车扩展板的D5,即接在micro bit主板的P5控制端,所以点击P0后面的下拉三角形按钮选择P5。又因为KEYES-2812-18R模块自带18个WS2812 RGB灯,所以将leds前面的数字24改成18,点击RGB(GRB 顺序)后面的下拉三角形按钮选择RGB(GRB 顺序)。 ![](media/d2b51f849b2cac80c2c616f7e33bd6bb.png) (3)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中分别输入“val”,点击“OK”,建立了变量“val”。用同样的方法再建立变量“val2”,找到并拖出指令方块“将 val2 设为 0”放入“当开机时”指令方块中并复制1次也放入“当开机时”指令方块中,点击第一个val2后面的下拉三角形按钮选择val。 ![](media/f6134ece7033b8f4e96ba54160cb32c5.png) (4)先点击“变量”模块,找到并拖出指令方块“将 val2 设为 0”放入“无限循环”指令方块中,点击val2后面的下拉三角形按钮选择val,再点击“IrRemote”模块,找到并拖出指令方块“IR button”放入to后面的数字0处。 ![](media/e3523f051c199953c5d78fda1724f4f8.png) (5)先点击“逻辑”模块,找到并拖出指令方块“如果为 true 则”放入“无限循环”指令方块中,接着找到并拖出“=”方块放入“true”处方框中。再点击“变量”模块,找到并拖出变量指令方块“val”放入“=”左侧,“=”右侧的数字0不变,再点击“=”后面的下拉三角形按钮选择“≠”。 ![](media/863f53019dc24979707d011ee38ba536.png) (6)再点击“变量”模块,先找到并拖出指令方块“将 val2 设为 0”放入then的下方,再找到并拖出变量指令方块“val”放入指令方块“将 val2 设为 0”中的to后面的0处。 ![](media/56dc1554528d0ff21ede9842da6df217.png) 7. 点击“逻辑”模块,先找到并拖出指令方块“如果为...then...则”放入then的下方,接着点击指令方块“如果为...then...否则”的“ ![](media/a7c5c78217692a965e679b2439ab2f3a.png)”图案4次,再点击否则后面的“![](media/0fcc5d6332012fed7361a075bd60751f.png) ”图案1次删除否则,又再次找到并拖出“=”方块放入“true”处方框中。 ![](media/a64876c517ba4bbc27bf02b3e5092e14.png) (8)点击“变量”模块,找到并拖出变量指令方块“val2”放入“=”左侧,将“=”右侧的数字0改成70。 ![](media/b56abcb30b725bdd5d9d638d6af51dad.png) (9)先点击“K_Bit”模块,找到并拖出指令方块“car RunForward speed: 0%”放入第二个then下,将数字0改成40;再点击“Neopixel”模块,找到并拖出指令方块“strip 显示颜色 红”也放入第二个then下,点击 红 后面的下拉三角形按钮选择 绿。 ![](media/06e65686d779ad1f85decdebf1bd7e8b.png) (10)复制代码块“val2=70”1次放入第一个 否则如果为 后面方框中,将“=”后面的数字70改成68。 ![](media/acec9824c7e0bda73e61808b26642817.png) (11)先点击“K_Bit”模块,找到并拖出指令方块“LeftSide motor run Forward speed: 0%”放入第三个then下,将数字0改成15,接着复制指令方块“LeftSide motor run Forward speed: 15%”1次也放入第三个then下,点击LeftSide后面的下拉三角形按钮选择RightSide,并将数字15改成35;再点击“Neopixel”模块,找到并拖出指令方块“strip 显示颜色 红”也放入第三个then下,点击 红 后面的下拉三角形按钮选择 蓝。 ![](media/ae6fe54762085acb5e625c1f40e326f5.png) (12)先复制代码块“val2=68”1次放入第二个 否则如果为 后面方框中,将“=”后面的数字68改成67;再复制代码块串 ![](media/6652cce4491cb97a9e90e62609e0977a.png) 1次放入第四个then下 ,将LeftSide后面的数字15改成35,RightSide后面的数字35改成15,点击蓝后面的下拉三角形按钮选择 黄 。 ![](media/0f8ae5d031803be3bcbca2fdb1b8211d.png) (13)先复制代码块“val2=67”1次放入第三个 否则如果为 后面方框中,将“=”后面的数字67改成21;在复制第二个then下的代码串 ![](media/25158820676b4ecc2a93bf70dfc68b66.png) 1次放入第五个then下,点击RunForward后面的下拉三角形按钮选择RunBack,点击 绿 后面的下拉三角形按钮选择里 紫,其他的不变。 ![](media/b33fb73d61dec37501f0b08ce98e52d3.png) (14)先复制代码块“val2=21”1次放入第四个 否则如果为 后面方框中,将“=”后面的数字21改成64;点击“K_Bit”模块,找到并拖出指令方块“car stop”放入第五个then下,复制第五个then下的指令方块“strip 显示颜色 紫”1次放入第六个then下,点击 紫 后面的下拉三角形按钮选择红。 ![](media/b220755ac8c73ef3501fb57cf25f75f1.png) 完整的代码程序: ![](media/514a7b2f36b63835646b567257957e83.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②将IR接收器接在P16 ....................③将strip设为引脚P5初始化灯带18颗LED(模式RGB(GRB顺序)) ....................④将变量val设为0 ....................⑤将变量val2设为0 ....................⑥在“无限循环”指令方块之内,程序循环运行 ....................⑦将val设为IR button ....................⑧当变量val≠0成立时,执行then下程序 ....................⑨将变量val2设为val ....................⑩当val2=70成立时,执行then下的程序 ....................⑪小车以40%速度前进 ....................⑫strip上18个RGB亮绿色灯 ....................⑬当val2=68成立时,执行then下的程序 ....................⑭小车的左轮以15%速度前进 ....................⑮小车的右轮以35%速度前进 ....................⑯strip上18个RGB亮蓝色灯 ....................⑰当val2=67成立时,执行then下的程序 ....................⑱小车的左轮以35%速度前进 ....................⑲小车的右轮以15%速度前进 ....................⑳strip上18个RGB亮黄色灯 ....................㉑当val2=21成立时,执行then下的程序 ....................㉒小车以40%速度后退 ....................㉓strip上18个RGB亮紫色灯 ....................㉔当val2=64成立时,执行then下的程序 ....................㉕小车停止 ...................㉖strip上18个RGB亮红色灯 ![](media/c28fa197c3efc933b74b507e05003850.png) 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/13f12893a7d6877c33926a6b006943db.png) 5.实验结果: 按照之前的方式将代码下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,红外遥控对准扩展板的红外接收头,按下按键,即可控制小车运动。其中, ![](media/d55474f3fdf94e5d35de424c0135f554.png)按键控制小车前进,![](media/5c8a65498c17f35878adf79ba446a7c8.png)按键控制小车向左转,![](media/41116032870ebaa49d6e78fe2445da36.png)按键控制小车向右转,![](media/369433f6b13252c1df8c30b3f71028d2.png)按键控制小车后退,![](media/a8ef4b174911d528e2dc232c2f862b7d.png) 按键控制小车停止,同时KEYES-2812-18R模块18个RGB灯亮起对应的颜色灯。 注意:测试时,红外遥控需正对小车扩展板后面的红外接收头,距离最好不超过5米左右。 ### 22:蓝牙多功能小车 #### 22.1:读取蓝牙数据 ![](media/55b2424d88ba1ba8a711c49418ca8dc6.png) 1. 实验说明: 在micro:bit控制板上自带有蓝牙,可以通过蓝牙方式与Micro:bit通讯,可以用蓝牙控制Micro:bit,或者Micro:bit通过蓝牙把信号传回手机或者电脑,我们可以利用micro:bit上自带的蓝牙和手机蓝牙APP通信,利用蓝牙手机APP控制micro:bit外接设备工作。Micro:bit上自带的蓝牙既支持安卓系统手机,也支持IOS系统设备(手机或iPad)。我们为您提供两种蓝牙APP,适用于安卓系和IOS系统。这两种APP连接Micro:bit蓝牙的方法是类似的。在这一课程中,我们主要介绍蓝牙APP的使用和APP界面上各按钮的功能,并且通过蓝牙APP连接Micro:bit上的蓝牙来读取了APP界面上各按钮发送的控制字符。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit和蓝牙扩展库。 如果选择手动拖动代码,则首先需要添加k-bit和蓝牙扩展库。 由于micro:bit的硬件原因,蓝牙和无线电不能同时工作,所以它们的扩展库互不兼容。安装蓝牙扩展库时,系统将提示您删除无线电扩展。只需确认移除就行。 ![](media/aee56e76bad3421a20cea6018ccd5e2c.png) 3. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|..\1.Makecode教程\micro:bit测试程序\8.22:蓝牙多功能小车\8.22.1:读取蓝牙数据|microbit-读取蓝牙数据.hex| 也可以自己通过拖动代码块来编写代码程序,操作步骤如下: (1)先移除指令方块“无限循环”,再点击“高级”下的“串行”模块,找到并拖出指令方块“串行 重定向到 USB”放入“当开机时”指令方块中。 ![](media/d72b85e26a397a2fb8f83b2db8858982.png) (2)点击“蓝牙”模块,找到并拖出指令方块“通过蓝牙连接时”。 (3)点击“基础”模块,找到并拖出指令方块“显示图标”放入“通过蓝牙连接时”指令方块。 ![](media/cef54d29e617e62f3b519aa20162b69c.png) (4)点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入“connected”,点击“OK”,建立了变量“connected”。找到并拖出指令方块“将 connected 设为 0”放入“通过蓝牙连接时”指令方块,将 设为 后面的数字0改成1。 ![](media/e8625b71e8668bc068eb248ef50eac20.png) (5)先点击“循环”模块,找到并拖出指令方块“当条件为 true 执行...”放入“通过蓝牙连接时”指令方块,接着点击“逻辑”模块,找到并拖出“=”方块;再点击“变量”模块,找到并拖出变量指令方块“connected”放入“=”左侧方框,将右侧方块中的数字0改成1。 ![](media/038839b88ae6fbd3b0688ef2021633aa.png) (6)先点击“变量”模块,再点击“设置变量”出现“新变量的名称:”对话框,在对话框中输入“rec_data”,点击“OK”,建立了变量“rec_data”。找到并拖出指令方块“将 rec_data 设为 0”放入代码块“当条件为 connected=1 执行...”中;再点击“蓝牙”模块下的“更多”,找到并拖出指令方块“读取蓝牙 uart 直至遇到 执行”放入指令方块“将 rec_data 设为 0”中 设为 后面的数字0处,并点击 执行 后面的下拉三角形按钮选择 \#。 ![](media/2f3574c56fd5035f97adf8bdd447bcb4.png) (7)先点击“高级”下的“串行”模块,找到并拖出指令方块“串行写入字符串”放入代码块“当条件为 connected=1 执行...”中;再点击点击“变量”模块,找到并拖出变量指令方块“rec_data”放入指令方块“串行写入字符串”的文本框中。 ![](media/93eef1d313ad9553292d539b0a78be9e.png) (8)再次点击“高级”下的“串行”模块,找到并拖出指令方块“串行写入字符串”放入代码块“当条件为 connected=1 执行...”中。 ![](media/fa61d763106054cb085d99fc87c417dc.png) (9)点击“蓝牙”模块,找到并拖出指令方块“断开蓝牙连接时”。 (10)点击“基础”模块,找到并拖出指令方块“显示图标”放入“断开蓝牙连接时”指令方块,点击“❤”图案后面的下拉三角形按钮选择“ ![](media/25e0341e063286ff7828c15f09ae0ade.png) ”图案。 ![](media/6e17b845e4d1379cfba848735e030680.png) 完整的代码程序 ![](media/53be47e8ca1936df358789708652b6bd.png) ....................①“当开机时”指令方块仅运行一次以启动程序。 ....................②串行重定向USB。 ....................③通过蓝牙连接到micro:bit时就运行里面的代码 ....................④LED点阵显示“❤”图案 ....................⑤将变量connected设为1 ....................⑥当条件为connected=1时就执行do中代码 ....................⑦将变量rec_data设为读取蓝牙uart,直至遇到# ....................⑧串行写入字符串rec_data ....................⑨向串口写入一行空格 ....................⑩断开蓝牙连接到micro:bit时就运行里面的代码 ....................⑪LED点阵显示“![](media/25e0341e063286ff7828c15f09ae0ade.png)”图案 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/5128a8ec0eed8e0433006a392f16c128.png) 5.实验结果: (1)实验代码编完之后需要设置,先点击右上角的齿轮图标(设置),再单击“项目设定”,在文本框中输入“Read the data of Bluetooth”后,将“无需配对”设置为打开状态。(如果是直接导入实验代码的就不需要此操作,而自己拖动代码块编写实验代码的就需要此操作) ![](media/01b256e5bbe9420226085513778f5173.png) ![](media/8a9875bdef65c76b3fba7e7b6fd9e249.png) ![](media/fc2355ed3c903b291392ef373f6ca1b2.png) (2)设置完之后,按照之前的方式将实验代码下载到micro:bit ,micro USB数据线不要拔下来,利用micro USB数据线上电,下载之后开始下载安装手机/iPad蓝牙APP。 IOS系统设备(手机/iPad)APP a.打开App Store。 ![](media/27924fdb3d67692df7c63d8d0fb72287.png) b.在搜索框输入keyes Bit Car,点击搜索,再点击“ ![](media/962a57f92b78eea1f0e3e81463497a9c.png) ”,就可以下载keyes Bit Car的蓝牙APP。 ![](media/bb0985bc4d079475e1175b4b16d10b0e.png) c.下载完APP后,点击“OPEN”或点击手机/iPad桌面上的应用程序keyes Bit Car就可以打开APP,APP界面出现对话框,在对话框中点击“OK”。 ![](media/6c97d9ffcde0d66cb36a017a413ce0a3.png) ![](media/a5c05f7b5844e11a8ea7a4b96df244de.png) d.先开启手机/iPad蓝牙,再点击APP界面左上角的connect按钮(控件)进行蓝牙搜索,在搜索结果中点击“BCC micro:bit”,几秒钟后,蓝牙已连接。 安卓系统APP 1. 用浏览器中的扫描功能对着二维码扫描识别,识别成功后点击“go to website”就可以进入下载keyes_Bit_Car.apk页面,点击“Download immediately”下载keyes Bit Car应用程序。 ![](media/8fb53bd64d7d181ae9d24113419ac600.png) ![](media/e476860c0f534b0d9675649f02ec4d3b.png) ![](media/7566b3df9a230bc3f69993ad2d41fb85.png) 2. 点击“Allow allow”进入安装界面,点击“install”就可以安装好keyes Bit Car应用程序。 ![](media/638d0a4ae5f55ca39bff4f20a3bd14a6.png) ![](media/1b0ad4f8146ca600fd2670f1266b44ef.png) 3. 点击“Open”或点击手机桌面上的应用程序keyes Bit Car打开APP,出现对话框,在对话框中点击“Allow”打开手机蓝牙。也可以在打开APP之前先打开手机蓝牙。 ![](media/c818fd71d6872374fbe177f082207fac.png) ![](media/3dab73f0e830bb5c0348af86110f3e50.png) 4. 点击APP界面左上角的“CONNECT”按钮(控件)进行蓝牙搜索,在蓝牙搜索结果中点击“BCC micro:bit”对话框中的“connect”,几秒钟后,蓝牙已连接。 (3)由于实验代码原因,在MakeCode编辑器中不会出现的“显示控制台设备”,所以读取不了读取了APP界面上各按钮发送的控制字符,这里需要使用CoolTerm程序来读取APP界面上各按钮发送的控制字符。打开CoolTerm,点击Options,选择串行Port,设置COM口和波特率,波特率设置为115200(经过测试,micro:bit的USB串口通讯波特率是115200),点击OK后,最后点击Connect。这样,对准micro:bit按下手机/ipad 蓝牙APP界面上的各按钮(控件),可以看到CoolTerm串口监视器显示出蓝牙APP界面上各按钮(控件)对应的控制字符,如下图。 ![](media/3692e0ea2df357e30b51c6c83b0412f0.png) ![](media/6c1919fed6577bcf80a3564ee01e0207.png) 经过测试,我们得出了手机/ipad 蓝牙APP上各个按钮(控件)对应的功能,如下图: ![](media/d9b7b8502d84616ebfd2dd5273f1ecd1.png) ![](media/3f23a3f6f8be4be36f4c4222154c740f.png) ![](media/9384b0da3a7a3fd7eeac04b55fff862e.png) ![](media/2f05d2dac88caface2726524093ed6b1.png) #### 22.2:蓝牙多功能小车 ![](media/9968821d3c936ec1eb1d47380fafaa4c.png) 1. 实验说明: 在上一课程中,我们已经介绍了蓝牙APP的使用和各按钮的功能,并且通过蓝牙APP连接Micro:bit上的蓝牙来读取了APP界面上各按钮发送的控制字符,在本课程中,主要是通过蓝牙APP连接Micro:bit上的蓝牙实现APP控制小车多种功能。 2. 准备: (1)将micro:bit正确插入keyes Micro:bit迷你智能机器人小车。 (2)将电池装入keyes Micro:bit迷你智能机器人小车。 (3)开启keyes Micro:bit迷你智能机器人小车上的电源。(拨动POWER拨码开关到ON一端) (4)通过micro USB线连接micro:bit和电脑。 (5)打开Web版本的Makecode。 如果选择通过导入Hex文件来加载项目,则无需手动添加k-bit和蓝牙扩展库。 如果选择手动拖动代码,则首先需要添加k-bit和蓝牙扩展库。 由于micro:bit的硬件原因,蓝牙和无线电不能同时工作,所以它们的扩展库互不兼容。安装蓝牙扩展库时,系统将提示您删除无线电扩展。只需确认移除就行。 ![](media/aee56e76bad3421a20cea6018ccd5e2c.png) 3. 实验代码: 根据下表加载代码(如何加载?)如下图: |文件类型|路径|文件名| |-|-|-| |Hex file|../1.Makecode教程\micro:bit测试程序\8.22:蓝牙多功能小车\8.22.2:蓝牙多功能小车|microbit-蓝牙多功能小车.hex| 由于这个代码程序比较复杂,步骤比较多,这里我们就不提供编写代码程序的详细操作步骤,如果你自己有兴趣的话,可以自己拖动代码块来操作下。 完整的代码程序 ![](media/ecf47ca8e83be087e9146cf25f75ca3f.png) ![](media/e53bbecb05b250f27ca5420022a2e106.png) ![](media/98ff8cb2a8fa83a7d56e03be7a8976cc.png) ![](media/494f8b1dd02eaa6d94489ee6e90ff111.png) 点击micro: bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序: ![](media/c5db111b518abd3f2786b50f4d53f24b.png) ![](media/368c23bc4ea44c0c8453ca1bacff6bdd.png) ![](media/03db7155aa0c1f6ef8ae2202a4add0e3.png) ![](media/37838fc783417778322a057004d9fbf8.png) ![](media/6756aa5fb96faa96584b08852d847e28.png) ![](media/1035f09050b0b76a168fe1d9df6353a1.png) 5.实验结果: 该实验代码结合了前面所有章节的内容,根据蓝牙接收到的命令,使keyes micro:bit迷你智能机器人小车执行相应的动作。 先在“项目设置”中,将“无需配对”设置为打开状态(如果是直接导入实验代码的就不需要此操作,自己拖动代码块编写代码就需要这里此操作)。按照之前的方式将代码下载到micro:bit,确定已经开启Micro:bit迷你智能机器人小车上的电源(拨动POWER拨码开关到ON一端)。这样,下载之后打开手机/ipad应用程序keyes Bit Car,然后按照前面的方法完成蓝牙连接,那你就可以操作keyes Bit Car蓝牙APP页面上的按钮(控件)来控制keyes micro:bit迷你智能机器人小车。(因程序比较大,micro:bit的内存无法容纳,程序编译时会报错,需自己删掉一下自己用不到的功能块,方能编译下载) 本课程到此结束,祝您生活愉快、学习进步